Модификация темы DarkOne v4

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

Описание: Проверенные финальные версии сборок.

Сообщение #61 kairat1968 » 18.03.2015, 22:32

Всё наоборот стараются уйти от того, что-бы звук программно на компе обрабатывался. Твоя звуковая карта не при делах,
по HDMI с видеокарты намного проще и пролазит всё, самые тяжёлые форматы.
Настраивай в винде вывод звука правильно, можешь почитать тему на ХОБОТЕ, посвящённую выводу по HDMI.

спс за подсказку. тема HDMI уже в прошлом. все равно управлять с пульта ресивера ПК не возможно через ХДМЭ.согласен с вами фубар в обход винды звучит интересней. тестил на медне ресивер макинош в паре с аймаком звук супер хотя не хватает резкости фубара да и уже привычного звучания совкогова эс-90.думаю продать часть коллекции винила да прикупить боченок от эйпл. уже достал меня сонни .брал из-за 4К. сплошное разочарование.глубины звука и желаемое звучание получаешь тока через фубар. в ресивере да и в плеере никаких настроек тупо как есть и все. акустика от сони срезает верхи а саб просто бубнит соседям. ямаха до этого звучала по грамотней хотя из китая .у пк харман на среднем усиление звучит по бархатней. может зажрался но усилитель от макинтош дал мне понять что вся моя бытовая техника которую собирал годами отстой (((.да и даже по моему субъективному мнению ламповый усилитель уступает макинтошу.стоит не мерено но хочется.
kairat1968
Новичок
Репутация: 0
С нами: 3 года 11 месяцев

Сообщение #62 vladj » 19.03.2015, 12:19

kairat1968 писал(а):управлять с пульта ресивера ПК не возможно через ХДМЭ
Мне нравится управлять фубаром со смартфона на Андроиде купленным на маркете приложением,
"foobar 2000 controller PRO". В фубаре для этого устанавливается плагин foo_httpcontrol.
kairat1968 писал(а):не хватает резкости фубара да и уже привычного звучания совкогова эс-90
Нет никакой резкости, фубар честно выгоняет по цифре (HDMI или SPDIF) всё, что мы ему предлагаем.
У совковых АС 90 были приличные низы (по которым приходится скучать) и никакие средина и верха.
Замена мидов и твиттеров на современные поправит это. Ну и естествено...самую большую роль в тракте
играет именно то, какой усилитель используется, имхо.
HTPC Termaltake, eGlobal i5-7200, Asrock Beebox J3160, Onkyo 525E, цап SMSL, фронт Yamaha 8900.
vladj M
Гуру
Аватара
Откуда: Пермский край
Репутация: 350
С нами: 8 лет 7 месяцев

Сообщение #63 kgena_ua » 13.04.2015, 09:50

AHAPXICT, немного баловства :smile:
Скрипт: "бегущая строка".
Дополнение: плавное изменение цвета при переключении цвета.
Скрипт не изменял, что-то заремил, новое с пометкой //added.
Код: Выделить всё
// Scroll Text
// author kgena_ua
// modifed AHAPXICT for DarkOne v4.0 by tedGo
// version 2.0
// WSH Panel Mod component by Tianpeng Wang

function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
MF_SEPARATOR = 0x00000800;
MF_STRING = 0x00000000;
var font = gdi.Font("DarkOne",29,0);  //FONT
var ww,wh;

var txt_row = 4;
var s = 10, step, step1 = window.Width, step2 = window.Width;
var text1, text2, t_width, t_width1, t_width2, dir, mode, sw = 1;
var t1 = "", t2 = "", t3 = "", ti = "";
var show1, show2, show3, showi, showr;

get_color();    //added

function on_paint(gr) {
   
//    if (window.GetProperty("|6| Color") == 1) var font_rgb = RGB(191,228,255), block_rgb = RGB(24,37,46);   //Default   
//    if (window.GetProperty("|6| Color") == 2) var font_rgb = RGB(128,192,255), block_rgb = RGB(22,36,46);   //Blue   
//    if (window.GetProperty("|6| Color") == 3) var font_rgb = RGB(0,255,0), block_rgb = RGB(18,38,38);       //Green   
//    if (window.GetProperty("|6| Color") == 4) var font_rgb = RGB(255,0,0), block_rgb = RGB(38,26,34);       //Red   
//    if (window.GetProperty("|6| Color") == 5) var font_rgb = RGB(255,255,255), block_rgb = RGB(26,38,46);   //White   
//    if (window.GetProperty("|6| Color") == 6) var font_rgb = RGB(255,255,0), block_rgb = RGB(26,38,38);     //Yellow   

    show1 = window.GetProperty("|1| Title",1);
    show2 = window.GetProperty("|2| Artist",1);
    show3 = window.GetProperty("|3| Album",1);
    mode = window.GetProperty("|5| Mode",1);
    showi = window.GetProperty("|4| Info",1);
   
    if (show1 == 1) {t1 = fb.TitleFormat("$upper([%title%])").Eval();
    } else {t1 = "";}

    if (show2 == 1) {t2 = fb.TitleFormat("$upper([%artist%])").Eval();
    } else {t2 = "";}

    if (show3 == 1) {t3 = fb.TitleFormat("$upper([%album%])[ - %date%]").Eval();
    } else {t3 = "";}
   
    if (showi == 1) {ti = fb.TitleFormat("[$info(encoding)][ | $info(codec)][ $info(codec_profile)][ | $info(bitrate) kbps][ | $info(samplerate) Hz][ | $info(bitspersample) bps][ | $channels()]$if($stricmp($ext(%filename_ext%),cue), | '['cue']',[ | %filesize_natural%])$if($strcmp($info(cue_embedded),yes), | '['embedded cue']',)").Eval();
    } else {ti = "";}
 
    text1 = t1 + (show1 > 0 && t2 != "" ? " - " : "") + t2 + ((show1 > 0 || show2 > 0) && t3 != "" ? " - " : "") + t3;
    text2 = showi == 1 ? ti : text1;
    text1 = showi == 1 && text1 == "" ? text2 : text1;
    t_width2 = gr.CalcTextWidth(text2, font);
    t_width1 = gr.CalcTextWidth(text1, font);
   
    if (mode == 1) {
        step = sw == 1 ? step1 : step2;
        t_width = sw == 1 ? t_width1 : t_width2;
        if (sw == 1) {step2 = ww};
        if (sw == 2) {step1 = ww};
        if (t_width < ww - s * 2) {
            if (step >= ww) {dir = "left"; step = ww };
            if (step + t_width >= ww - s) {dir = "left"};
            if (step <= 0 + s) {dir = "right"};
        } else {
            if (step + t_width <= ww - s) {dir = "right"};
            if (step >= 0 + s) {dir = "left"};
        }
    }
    if (mode == 0) { dir = "left";
        if (sw == 1) {
            if (step1 + t_width1 > ww/2) {step2 = ww};
            if (step1 + t_width1 <= 0) {step1 = ww; sw = 2};

        } else {
            if (step2 + t_width2 > ww/2) {step1 = ww};
            if (step2 + t_width2 <= 0) {step2 = ww; sw = 1};
        }
    }
 String.prototype.repeat = function(n) {
return new Array(n + 1).join(this);
}   
// ========BACKGROUND & BLOCKS======== //
//  gr.FillSolidRect (0, 0, ww, wh, RGB(19,30,38));
    gr.GdiDrawText( "\u2598".repeat(18), font, block_rgb, 0, txt_row, ww, wh);
// ========TEXT======== //   
    gr.GdiDrawText( text1, font, font_rgb, step1, txt_row, t_width1, wh);
    gr.GdiDrawText( text2, font, font_rgb, step2, txt_row, t_width2, wh);
}

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

var seek_timer;
var speed = window.GetProperty("|7| Speed Scroll", 50);
function on_playback_new_track(info) {
    seek_timer && window.ClearInterval(seek_timer);
    seek_timer = window.SetInterval(function() {
        if (dir == "right") {step1 = step1 + 1};
        if (dir == "right") {step2 = step2 + 1};
        if (dir == "left") {step1 = step1 - 1};
        if (dir == "left") {step2 = step2 - 1};
    window.Repaint();
    }, speed );
}

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

function on_playback_time(){
    if(!seek_timer) on_playback_new_track();
}

function on_mouse_lbtn_up (x, y){     
    var _menu = window.CreatePopupMenu();
    var i = 1;
   
    _menu.AppendMenuItem(0x00000000, i++, "title");
    _menu.CheckMenuItem(i-1, show1);   
    _menu.AppendMenuItem(0x00000000, i++, "artist");
    _menu.CheckMenuItem(i-1, show2);   
    _menu.AppendMenuItem(0x00000000, i++, "album");
    _menu.CheckMenuItem(i-1, show3);
    _menu.AppendMenuItem(0x00000000, i++, "info");
    _menu.CheckMenuItem(i-1, showi);
    _menu.AppendMenuItem(0x00000000, i++, "scrolling mode: " + (mode == 0 ? "L-R" : "L"));

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

    switch (ret) {
    case 1:
        window.SetProperty("|1| Title", show1 == 0 ? 1 : 0);
        break;
    case 2:
        window.SetProperty("|2| Artist", show2 == 0 ? 1 : 0);
        break;
    case 3:
        window.SetProperty("|3| Album", show3 == 0 ? 1 : 0);
        break;
    case 4:
        window.SetProperty("|4| Info", showi == 0 ? 1 : 0);
        break;
    case 5:
        window.SetProperty("|5| Mode", mode == 0 ? 1 : 0);
        break;
    }
    _menu.Dispose();
    return true;
}
// ========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.CheckMenuRadioItem(1, 6, window.GetProperty("|6| Color", 1));   

    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0)
    _menu.AppendMenuItem(MF_STRING, 7, "Properties...");
    _menu.AppendMenuItem(MF_STRING, 8, "Configure...");

    idx = _menu.TrackPopupMenu(x, y);
    switch (idx) {

    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
//        window.SetProperty("|6| Color", idx);   
        ch_color(idx);  //added
//        window.Repaint();   
        break;   
    case 7:
        window.ShowProperties();
        break;
    case 8:
        window.ShowConfigure();
        break;
}
    _menu.Dispose();
return true
}

//added

var block_rgb, font_rgb;

function get_color() {
    if (window.GetProperty("|6| Color") == 1)  font_rgb = RGB(191,228,255), block_rgb = RGB(24,37,46);   //Default   
    if (window.GetProperty("|6| Color") == 2)  font_rgb = RGB(128,192,255), block_rgb = RGB(22,36,46);   //Blue   
    if (window.GetProperty("|6| Color") == 3)  font_rgb = RGB(0,255,0), block_rgb = RGB(18,38,38);       //Green   
    if (window.GetProperty("|6| Color") == 4)  font_rgb = RGB(255,0,0), block_rgb = RGB(38,26,34);       //Red   
    if (window.GetProperty("|6| Color") == 5)  font_rgb = RGB(255,255,255), block_rgb = RGB(26,38,46);   //White   
    if (window.GetProperty("|6| Color") == 6)  font_rgb = RGB(255,255,0), block_rgb = RGB(26,38,38);     //Yellow
}

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("|6| Color", idx);   
//    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);
}


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

в последний раз по картинкам.

Сообщение #64 АНАРХИСТ » 27.04.2015, 21:15

качаю всё с одного и того же трекера, где к контенту относятся очень бережно. В папках с флаками и апе, почти всегда сканы обложек. Которые ни одна сборка не хочет показывать. Если по способу предложенному вами, добавлять картинку с Last.fm , то она показывается, но в папке, в которую она добавляется, картинок уже навалом, а показывает только свежескачанную. Как быть? Как видеть скачанные вместе с контентом качественные сканы и ничего вручную не подгружать?
АНАРХИСТ
Гость

Сообщение #65 AHAPXICT. » 28.04.2015, 07:22

АНАРХИСТ, скажу вам как анархист - анархисту: Как правило на всех трекерах сканы обложек входящих в контент находятся в папках с какими угодно названиями, но только не Covers, Cover, Artwork и т.д., а сами картинки в названиях не имеют нечего общего с folder, front, cover, back, cd и т.п.. Потому у вас не одна сборка и не хочет их показывать))) И если вы сидер то менять названия не выход. У меня сейчас нет возможности сделать файл конфигурации .fcl, поэтому попробуйте сами сделать следующее:
1. Сохраните свой файл конфигурации: Menu\File\Preferences\Display\Columns UI\Main - FCL importing and exporting - Export...
2. Сделайте щелчок ПКМ на окне Cover Panel ----> Configure...
3. Замените исходный скрипт на скрипт от Maxim Terpilovsky, этот скрипт показывает любые картинки, многие его используют в своих сборках.
Спойлер
Код: Выделить всё
// Maxim Terpilovsky's script
// http://terpilovsky.ru
// Artwork / Updated 27-01-2014

DT_END_ELLIPSIS = 0x00008000;
DT_EDITCONTROL = 0x00002000;
DT_TOP = 0x00000000;
DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_VCENTER = 0x00000004;
DT_BOTTOM = 0x00000008;
DT_WORDBREAK = 0x00000010;
MF_STRING = 0x00000000;
MK_CONTROL = 0x0008; 
DT_CALCRECT = 0x00000400;
MF_POPUP = 0x00000010;
MK_SHIFT = 0x0004; 
DT_NOPREFIX = 0x00000800;

function StrFmt(alignH,alignV,trim,flag){ return ((alignH<<28)|(alignV<<24)|(trim<<20)|flag); }
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 FSO = new ActiveXObject("Scripting.FileSystemObject");
var WshShell = new ActiveXObject("WScript.Shell");
var ww, wh;
var g_hover = 0;

if ( utils.CheckFont( "Segoe UI" ) ) {
    var g_font       = gdi.Font("Segoe UI", 13);
    var g_font2      = gdi.Font("Segoe UI", 12, 0);
    var g_font_small = gdi.Font("Segoe UI", 11, 0);
} else {
   var g_font       = gdi.Font("Tahoma", 13);
    var g_font2      = gdi.Font("Tahoma", 11, 1);
    var g_font_small = gdi.Font("Tahoma", 10, 1);
}



/*var arrow_left, arrow_right, info_hover = 0;
try {
    var arrow_left  = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\arrow_left.png" );
    var arrow_right = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\arrow_right.png" );
    var picture = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\picture.png" );
    var user_image     = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\user.png" );
} catch(e) {
    // fb.trace(e.message);
}
*/



function CoverShow( metadb ) {

   this.CachedPath = 0;
    this.CachedCoversNumber = 0;


    // Current Mode
    this.CurrentMode        = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'displayed_cover', 1) );

    // Current Mode
    this.DisplayMode        = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'disp_mode', 1) );

   // Priority
   this.Priority           = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'cover_priority', 2) );

   // Exclude
   this.Exclude            = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'exclude_covers', 0) );

   // Pattern
    // 1 - *keywords*.*
    // 2 - keywords.*
   this.MatchPattern       = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'match_pattern', 1) );

   // Aspect ratio
   this.Aspect             = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'covers_aspect', 1) );

   // Gesture
   this.GestureInverted    = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'gesture_inverted', 0) );

   // Covers from Root folder
   this.RootCovers         = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'root_covers', 1) );

   // Covers from subfolders
   this.SubCovers          = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'sub_covers', 1) );


   // Interval
   this.Interval           = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'interval', 1) );
    this.Intervals          = new Array(5000, 15000, 30000, 60000, 120000);

    cache_path              = utils.ReadINI(fb.FoobarPath + 's7e.ini', 'bio', 'cache_path');
    this.CachePath          = cache_path ? cache_path : false;


   // No Cover and Case
   //try {
      //this.NoCover = gdi.Image( fb.ProfilePath + "s7e_files\\images\\nocover.png" );
      //this.Case = gdi.Image( fb.ProfilePath + "s7e_files\\images\\case.png" );
   //}
   //catch(e) { }

   // Metadb
   this.OutputMetadb = function() {

        return ( this.CurrentMode == 3 || !fb.IsPlaying ? fb.GetFocusItem(true) : fb.GetNowPlaying() );

   }


    this.FormatMeta = function( meta, db ) {

        if ( db )  {
          s     = fb.TitleFormat("%" + meta + "%").EvalWithMetadb( db );
          s     = s.replace(/[\/\\\:\*\?\"\<\>\|]/g,'-');
            s     = s.replace(/(^\s+)|(\s+$)/g, "");
            return s;
        } else return '';

    }

   // Search for files
   this.Search = function( array, dir) {

      var e = new Enumerator( dir.Files );

      while( !e.atEnd() ) {
         var name = e.item().Name;
         if( name.match(/\.(jpg|jpeg|png|gif|bmp|tiff)$/i) ) {
            array.push( e.item().Path );
         }
         e.moveNext();
      }

   }

   // Find all covers in the folder
   this.GetExternalCovers = function( path ) {

      var files = [];
      var files_this = [];
      var files_subs = [];
      var covers = [];

      try {
         var dir  = FSO.GetFolder( path );
            var root = dir.ParentFolder;

         this.Search(files_this, dir);
            this.Search(files_this, root);

            if ( this.SubCovers ) {

             var e = new Enumerator( dir.SubFolders );

             for(; !e.atEnd(); e.moveNext() ) {
                this.Search(files_subs, e.item() );
             }

            }

      } catch(e) {
            // fb.trace( 'this.GetExternalCovers / path: ' + e.message );
        }


      if ( files_this.length > 0 || files_subs.length > 0 ) {

            files_this.sort();
            files_subs.sort();
            files = files.concat(files_this, files_subs);

            var k = files.length;
            files.reverse();
            while (k--){

            var name = files[k];

                if ( this.MatchPattern == 1 ) {
                    if ( name.match(/.*(cover|front|folder)([^\\]*)\.(jpg|jpeg|gif|png|bmp|tiff)$/i) ) {
                        covers.push( name );
                        files[k] = null;
                    }
                }
                else {
                    if ( name.match(/\\(cover|front|folder)\.(jpg|jpeg|gif|png|bmp|tiff)$/i) ) {
                        covers.push( name );
                        files[k] = null;
                    }
                }
         }

         overall = covers;


         k = files.length;
            while (k--){
                var cur = files[k];
            if ( typeof( cur ) == 'string' ) overall.push( cur );
         }

         return overall;

      }
      else return new Array();

   }


   this.GetCovers = function( path ) {

      switch ( this.Exclude ) {

         case 0:
               var embedded  = this.DisplayMode == 2 && this.CachePath ? [] : this.GetEmbeddedCovers( this.Metadb );
               var external  = this.GetExternalCovers( path );

               var allcovers = [];

               if ( this.Priority == 1 ) allcovers = allcovers.concat(embedded, external);
               else                      allcovers = allcovers.concat(external, embedded);

               this.Covers = allcovers;
            break;


         case 1:
               var external = this.GetExternalCovers( path );
               this.Covers = external;
            break;


         case 2:
               var embedded = this.DisplayMode == 2 && this.CachePath ? [] : this.GetEmbeddedCovers( this.Metadb );
               this.Covers = embedded;
            break;

      }


      if ( this.Covers.length > 0 ) {

         try {

                var temp = this.Covers[0];
                return ( typeof temp == 'object' ? temp.Clone( 0, 0, temp.Width, temp.Height ) : gdi.LoadImageAsync( window.ID, temp ) );

         }
         catch(e) { return undefined; }

      }
      else {
         this.Covers = false;
         return 0;
      }

   }


   this.GetEmbeddedCovers = function( metadb ) {

        if ( metadb ) {
            var embedded = [];
            var c = 5;
            while ( c-- ) {

                if ( c == 3 ) continue;

                var temp = utils.GetAlbumArtEmbedded( metadb.RawPath, c );
                if ( temp ) embedded.push( temp );

            }
            return embedded;
        } else return [];

   }


   this.CompareDirs = function() {

        metadb = this.OutputMetadb();
        try {
            artist = this.Eval( this.Metadb, 'artist'  );
            metapath = metadb.Path;
            metapath = this.DisplayMode == 2 && this.CachePath && FSO.FolderExists( this.CachePath + '\\' + artist ) ? this.CachePath + '\\' + artist : metapath.replace(/\\([^\\]*)$/g, '');
        }
        catch (e) { metapath = 0; }

        if ( metapath ) {

            switch ( this.Exclude ) {

                case 0:
                        var embedded  = this.DisplayMode == 2 && this.CachePath ? [] : this.GetEmbeddedCovers( this.Metadb );
                        var external  = this.GetExternalCovers( metapath );

                        var allcovers = [];

                        if ( this.Priority == 1 ) allcovers = allcovers.concat(embedded, external);
                        else                      allcovers = allcovers.concat(external, embedded);

                        //this.Covers = allcovers;
                    break;


                case 1:
                        var allcovers = this.GetExternalCovers( metapath );
                        //this.Covers = external;
                    break;


                case 2:
                        var allcovers = this.DisplayMode == 2 && this.CachePath ? [] : this.GetEmbeddedCovers();
                       
                        //this.Covers = embedded;
                    break;

            }

         var allcovers = new Array();
            allcovers = allcovers.concat(embedded, external);

            return this.CachedCoversNumber == allcovers.length;
        }
    }


   this.ChangeImage = function( val ) {
      this.CurrentCover = val;
   }


   this.NextCover = function() {

      if ( this.Covers && this.Covers.length > 1 ) {

         this.CurrentCoverNumber = this.CurrentCoverNumber + 1 == this.Covers.length ? 0 : this.CurrentCoverNumber + 1;

         try {

                var temp = this.Covers[ this.CurrentCoverNumber ];
                var img = ( typeof temp == 'object' ) ? temp.Clone(0,0,temp.Width,temp.Height) : gdi.LoadImageAsync(window.ID, temp);

         } catch (e) { var img = undefined; }


            this.ChangeImage( img );
            window.Repaint();

      }
        else if ( !this.Covers ) { this.Update();  }

   }

    this.MultipleCovers = function() {

        return ( this.Covers && this.Covers.length > 1 );

    }

   this.PrevCover = function() {

      if ( this.Covers && this.Covers.length > 1 ) {

         this.CurrentCoverNumber = ( this.CurrentCoverNumber == 0 ) ? this.Covers.length - 1 : this.CurrentCoverNumber - 1;

         try {

                var temp = this.Covers[ this.CurrentCoverNumber ];
                var img = ( typeof temp == 'object' ) ? temp.Clone(0,0,temp.Width,temp.Height) : gdi.LoadImageAsync(window.ID, temp);

         } catch (e) { var img = undefined; }

            this.ChangeImage( img );
            window.Repaint();

      }
        else if ( !this.Covers ) { this.Update(); }

   }


   this.StopTimer = function() {
      this.CycleTimer ? window.ClearInterval(this.CycleTimer) : '';
   }

   this.StartTimer = function() {

        if ( this.CycleTimer ) window.ClearInterval( this.CycleTimer );
      if ( this.CurrentMode == 2 ) this.CycleTimer = window.SetInterval( function() { Cover.NextCover() }, this.Intervals[ this.Interval ] );

   }

    this.Reset  = function() {

        this.Covers = false;
        this.CoverX = null;
        this.CoverY = null;
        this.CurrentCoverNumber = 0;
        this.CurrentCover = 0;
        this.CachedPath = '';
        this.CachedCoversNumber = 0;
        this.CachedArtist = '';
    }


   this.Eval = function( meta, field ) {

        path = meta ? meta.Path : '';
      if ( path ) return path.indexOf('://') > 0 ?  fb.TitleFormat("[%" + field + "%]").Eval( true ) : fb.TitleFormat("[%" + field + "%]").EvalWithMetadb( meta );

   }


   this.Update = function( metadb ) {

      this.Metadb = metadb ? metadb : this.OutputMetadb();
       
        artist = this.Eval( this.Metadb, 'artist'  );

      try {
            dir = this.Metadb.Path;
            dir = dir.replace(/\\([^\\]*)$/g, '');
            this.MetaPath = this.DisplayMode == 2 && this.CachePath && FSO.FolderExists( this.CachePath + '\\' + artist ) ? this.CachePath + '\\' + artist : dir;
        }
      catch (e) { this.MetaPath = 0; }

      if ( this.MetaPath && artist ) {

            var artist_temp = this.Eval( this.Metadb, 'artist'  );
            var a = this.CachedPath ? this.CachedPath : ' ';
            var b = this.MetaPath;

            if ( a != b || ( this.CachedArtist != artist_temp ) ) {

                this.Covers             = false;
            this.CurrentCoverNumber = 0;
                this.CurrentCover       = this.GetCovers( this.MetaPath );
                this.CachedPath         = this.MetaPath;
                this.CachedCoversNumber = this.Covers != undefined ? this.Covers.length : 0;
                this.CachedArtist       = artist_temp;
                window.Repaint();

         }

      }
      else {

            this.Reset();
            window.Repaint();

        }

   }

   //this.Update( metadb);
    this.CachedArtist = '';
    this.CachedCoversNumber = this.Covers != undefined ? this.Covers.length : 0;
   this.CycleTimer = 0;
   this.TimerStarted = false;
    this.LbtnPressed = 0;
    this.X1 = 0;
    this.X2 = 0;
    this.X  = 0;
    this.MouseGesture = 0;
    this.CoverX = null;
    this.CoverY = null;
    this.Covers = undefined;
}


var Cover = new CoverShow();


function on_size() {

    ww = window.Width;
    wh = window.Height;
///    if ( ww && wh ) { Cover.Reset(); Cover.Update(); }

}


function on_paint( gr ) {

    //d = new Date();
    //t = d.getTime();

        gr.SetSmoothingMode( 4 );
        gr.SetInterpolationMode( 1 );
///        gr.FillSolidRect(0, 0, ww, wh, RGB(255,255,255));


        if ( Cover.Covers ) {

            // Bottom box
///            gr.FillSolidRect( 0, wh - 27, ww, 27, RGBA(255,255,255,150));


            // Check if it's corrupted or not loaded
            if ( !Cover.CurrentCover ) {

                Cover.CoverX = null;
                Cover.CoverY = null;

                var cov = Cover.Covers[ Cover.CurrentCoverNumber ];

                if ( typeof cov == 'object' ) {

                    Cover.CurrentCover = cov == null ? false : cov.Clone(0,0,cov.Width,cov.Height);
                    var image_name = 'Embedded image';

                }
                else {

                    Cover.CurrentCover = gdi.Image( cov );
                    if ( Cover.CurrentCover == null ) Cover.CurrentCover = false;
                    var image_name = 'Image';

                }

                if ( !Cover.CurrentCover ) gr.GdiDrawText( image_name + ' is probably corrupted and cannot be displayed.', g_font, RGB(0,0,0), 0, 0, ww, wh, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);               
                if ( !Cover.CurrentCover ) gr.GdiDrawText( image_name + ' is probably corrupted and cannot be displayed.', g_font, RGB(140,164,179), 0, 0, ww, wh, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);               

            }


            if ( typeof Cover.CurrentCover == 'object' ) {

                var img = Cover.CurrentCover;

                // Width, height, coords
///                var resulting_height = wh - 53;

                if ( Cover.Aspect ) {

                    if ( img.Width > ww || img.Height > wh ) {
//                    if ( img.Width > ww || img.Height > resulting_height ) {
                        var iw1 = ww;
                        var iw2 = img.Width / ( img.Height / wh );
///                        var iw2 = img.Width / ( img.Height / resulting_height );
                        var ih1 = wh;
///                        var ih1 = resulting_height;
                        var ih2 = img.Height / ( img.Width / ww );
                        var iw = Math.min(iw1, iw2);
                        var ih = Math.min(ih1, ih2);

                    }
                    else {
                        var iw = img.Width;
                        var ih = img.Height;
                    }

                }
                else {

                    var iw = ( img.Width > ww ) ? ww : img.Width;
                    var ih = ( img.Height > wh ) ? wh : img.Height;
///                    var ih = ( img.Height > resulting_height ) ? resulting_height : img.Height;

                }

                img = img.CreateRawBitmap();

                var x = (iw < ih) ? ((iw < ww) ? ((ww - iw)/2) : 0 ) : ((iw >= ww) ? 0 : ((ww - iw)/2));
                var y = (iw > ih) ? ((ih < wh) ? ((wh - ih)/2) : 0 ) : ((ih >= wh) ? 0 : ((wh - ih)/2));
///                var y = (iw > ih) ? ((ih < resulting_height) ? ((wh - ih)/2) : 0 ) : ((ih >= resulting_height) ? 0 : ((wh - ih)/2));

                Cover.CoverX = x;
                Cover.CoverY = y;

                // Draw cover
                gr.GdiDrawBitmap( img, x, y, iw, ih, 0, 0, img.Width, img.Height );

                if((wh - ih)/2 < 15 && g_hover == 1){
                    gr.FillSolidRect (0, 0, ww, 18, RGBA(0,20,30,150));                 
                    gr.FillSolidRect (0, wh - 18, ww, wh, RGBA(0,20,30,150)); 
                }

                // Resolution
///                gr.GdiDrawText( Cover.CurrentCover.Width + " × " + Cover.CurrentCover.Height, g_font_small, RGB(0,0,0), 0, wh - 25, ww, 25, DT_CENTER | DT_VCENTER | DT_CALCRECT);
                if (g_hover == 1) {
                    gr.GdiDrawText( Cover.CurrentCover.Width + " X " + Cover.CurrentCover.Height, g_font_small, RGB(0,0,0), 7, 1, ww, 18, DT_LEFT| DT_VCENTER | DT_END_ELLIPSIS | DT_CALCRECT);
                    gr.GdiDrawText( Cover.CurrentCover.Width + " X " + Cover.CurrentCover.Height, g_font_small, RGB(140,164,179), 6, 0, ww, 18, DT_LEFT| DT_VCENTER | DT_END_ELLIPSIS | DT_CALCRECT);
                }

                // Filesize
///                try { var size = Math.round( FSO.GetFile( Cover.Covers[ Cover.CurrentCoverNumber ] ).size / 1024 ) + " KB"; }
///                catch(e) { var size = ''; }
///                gr.GdiDrawText( size, g_font_small, RGB(0,0,0), 6, wh - 25, ww, 25, DT_LEFT| DT_VCENTER | DT_CALCRECT);


                // Release graphics
                var graphics = Cover.CurrentCover.GetGraphics();
                Cover.CurrentCover.ReleaseGraphics( graphics );
                Cover.CurrentCover.Dispose();
                Cover.CurrentCover = 0;

            }
            else if ( typeof Cover.CurrentCover == 'number' ) {

                gr.GdiDrawText( 'Loading...', g_font2, RGB(0,0,0), 1, 1, ww, wh, DT_CENTER | DT_VCENTER | DT_CALCRECT);
                gr.GdiDrawText( 'Loading...', g_font2, RGB(140,164,179), 0, 0, ww, wh, DT_CENTER | DT_VCENTER | DT_CALCRECT);

            }

            // Cover Number

            if (g_hover == 1) {
                gr.GdiDrawText( (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length, g_font_small, RGB(0,0,0), -5, wh - 20, ww, 25, DT_RIGHT | DT_VCENTER | DT_CALCRECT);
                gr.GdiDrawText( (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length, g_font_small, RGB(140,164,179), -6, wh - 21, ww, 25, DT_RIGHT | DT_VCENTER | DT_CALCRECT);
            }
///            gr.DrawLine( 0, wh - 25, ww, wh - 25, 1, RGB(218,219,220));

            // Filename
            if ( typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) var filename = 'Embedded';
            else if ( Cover.Covers[ Cover.CurrentCoverNumber ] ) var filename = Cover.Covers[ Cover.CurrentCoverNumber ].replace(/(.*)\\(.*)$/i,"$2");

///            estimate = gr.EstimateLineWrap(filename, g_font_small, ww - 10);
///            estimate = estimate.toArray();

///            if ( picture && user_image ) gr.DrawImage( Cover.DisplayMode == 2 ? user_image : picture, 5, 5, picture.Width, picture.Height, 0, 0, picture.Width, picture.Height, angle = 0, alpha = 255);
            if (g_hover == 1) {
                gr.GdiDrawText( filename, g_font_small, RGB(0,0,0), 6, wh - 17, ww - 39, 18, DT_LEFT| DT_VCENTER | DT_END_ELLIPSIS | DT_CALCRECT);
                gr.GdiDrawText( filename, g_font_small, RGB(140,164,179), 5, wh - 18, ww - 40, 18, DT_LEFT| DT_VCENTER | DT_END_ELLIPSIS | DT_CALCRECT);
            }
///            gr.DrawLine( 0, 25, ww, 25, 1, RGB(218,219,220));


        }
        else {

            metadb = Cover.OutputMetadb();
            if ( metadb ) info = fb.TitleFormat(Cover.DisplayMode == 2 ? "[%artist%]" : "[%artist%][ — %album%]").EvalWithMetadb( metadb );
            else          info = false;

            Cover.CoverX = null;
            Cover.CoverY = null;
            gr.GdiDrawText( 'No images', g_font2, RGB(0,0,0), 1, 1, ww, wh, DT_CENTER | DT_VCENTER | DT_CALCRECT);
            gr.GdiDrawText( 'No images', g_font2, RGB(140,164,179), 0, 0, ww, wh, DT_CENTER | DT_VCENTER | DT_CALCRECT);

            // ARTIST BAR
///            if ( info ) {
///                gr.FillSolidRect(0, 0, ww, 25, RGB(255,255,255));
///                gr.GdiDrawText( info, g_font2, RGB(0, 0, 0), 24, 0, ww - 50, 25, DT_LEFT | DT_VCENTER | DT_EDITCONTROL | DT_END_ELLIPSIS | DT_CALCRECT | DT_NOPREFIX);
///                gr.DrawLine( 0, 25, ww, 25, 1, RGB(218,219,220));
///                if ( picture && user_image ) gr.DrawImage( Cover.DisplayMode == 2 ? user_image : picture, 5, 4, user_image.Width, user_image.Height, 0, 0, user_image.Width, user_image.Height, angle = 0, alpha = 255);
///            }


        }

    //d = new Date();
    //t2 = d.getTime();
    //fb.trace( 'Repaint: ' + (t2 - t) + ' ms' );

}


function on_load_image_done(cookie, image) {

    Cover.CurrentCover = image == null ? false : image;
    window.Repaint();

}



function on_mouse_move(x, y) {

    if ( !g_hover ) {

        g_hover = 1;
            window.Repaint(); 

        if ( !Cover.CompareDirs() ) {

          Cover.Reset();
            Cover.Update();

        }

    }

   if ( Cover.MultipleCovers() && Cover.X1 ) {
        Cover.X2 = x;
    }

}


function on_mouse_leave() {

   g_hover    = 0;
    info_hover = 0;

    Cover.X1   = 0;
    Cover.X2   = 0;
    Cover.X    = 0;
    Cover.MouseGesture = 0;
    window.Repaint(); 
}

function on_mouse_wheel( step ) {

    (step < 0) ? Cover.NextCover() : Cover.PrevCover();

}


function on_mouse_lbtn_down(x, y, mask) {

    if ( mask == 1 ) {
        Cover.LbtnPressed = 1;
        Cover.X1 = x;
    }

}


function on_mouse_lbtn_up(x, y, mask) {

   if ( !mask && Cover.MultipleCovers() && Cover.X1 ) {

        Cover.X2 = x;

        if ( Cover.X1 < Cover.X2 && Math.abs( Cover.X1 - Cover.X2 ) > 8 ) Cover.GestureInverted == 1 ? Cover.NextCover() : Cover.PrevCover();
        else if ( Cover.X1 > Cover.X2 && Math.abs( Cover.X1 - Cover.X2 ) > 8 ) Cover.GestureInverted == 1 ? Cover.PrevCover() : Cover.NextCover();
        else if ( Cover.X1 > ww / 2 ) Cover.NextCover();
        else if ( Cover.X1 < ww / 2 ) Cover.PrevCover();

        Cover.LbtnPressed = 0;
        Cover.X1 = 0;
        Cover.X2 = 0;
        Cover.X = 0;
        Cover.MouseGesture = 0;

   }
   else if ( mask == MK_CONTROL ) {
      if ( typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) WshShell.run( '"' + Cover.MetaPath.replace(/\\([^\\]*)$/g, '') + '"' );
        else if ( Cover.Covers[ Cover.CurrentCoverNumber ] ) WshShell.run( '"' + Cover.Covers[ Cover.CurrentCoverNumber ] + '"' );
    }
    else if ( mask == MK_SHIFT ) {

        WshShell.run( '"' + Cover.MetaPath.replace(/\\([^\\]*)$/g, '') + '"' );

    }

}

function on_mouse_rbtn_up(x, y) {
   var _menu = window.CreatePopupMenu();
   var _firstgroup = window.CreatePopupMenu();
   var _secondgroup = window.CreatePopupMenu();
   var _thirdgroup = window.CreatePopupMenu();
   var _fourthgroup = window.CreatePopupMenu();
   var _fivthgroup = window.CreatePopupMenu();
   var _sixthgroup = window.CreatePopupMenu();
   var _seventhgroup = window.CreatePopupMenu();
   var _eighthgroup = window.CreatePopupMenu();
   var _ninthgroup = window.CreatePopupMenu();
    var _tenthgroup = window.CreatePopupMenu();
   var i = 1;
   var ret;

    artist = Cover.FormatMeta('artist', Cover.OutputMetadb() );

   _firstgroup.AppendMenuItem(MF_STRING, i++, "Playing item (no cycle)");
   _firstgroup.AppendMenuItem(MF_STRING, i++, "Playing item (cycle images)");
   _firstgroup.AppendMenuItem(MF_STRING, i++, "Current selection");

   _firstgroup.EnableMenuItem( Cover.CurrentMode, 1 );
   _firstgroup.CheckMenuRadioItem( 1, i-1, Cover.CurrentMode );

    _firstgroup.AppendMenuSeparator();

   _firstgroup.AppendMenuItem(MF_STRING, i++, "Artwork: front, back, disc, etc.");
   _firstgroup.AppendMenuItem(MF_STRING, i++, "Artist images");
    _firstgroup.EnableMenuItem( i-1 , !Cover.CachePath ? 1 : 0 );
   _firstgroup.EnableMenuItem( Cover.DisplayMode + 3, 1 );
   _firstgroup.CheckMenuRadioItem( i-2, i-1, Cover.DisplayMode + 3 );

   _secondgroup.AppendMenuItem(MF_STRING, i++, "Embedded covers");
   _secondgroup.AppendMenuItem(MF_STRING, i++, "External covers");

   _secondgroup.EnableMenuItem( Cover.Priority + 5, 1 );
   _secondgroup.CheckMenuRadioItem( i-2, i-1, Cover.Priority + 5 );

   _thirdgroup.AppendMenuItem(MF_STRING, i++, "Embedded covers");
   _thirdgroup.AppendMenuItem(MF_STRING, i++, "External covers");

   if ( Cover.Exclude ) {
//      _thirdgroup.EnableMenuItem( Cover.Exclude + 5, 1 );
      _thirdgroup.CheckMenuRadioItem( i-2, i-1, Cover.Exclude + 7 );
   }

   _fourthgroup.AppendMenuItem(MF_STRING, i++, "*keywords*.*");
   _fourthgroup.AppendMenuItem(MF_STRING, i++, " keywords.*");

    _fourthgroup.EnableMenuItem( Cover.MatchPattern + 9, 1 );
    _fourthgroup.CheckMenuRadioItem( i-2, i-1, Cover.MatchPattern + 9 );


   _fivthgroup.AppendMenuItem(MF_STRING, i++, "5 sec");
   _fivthgroup.AppendMenuItem(MF_STRING, i++, "15 sec");
   _fivthgroup.AppendMenuItem(MF_STRING, i++, "30 sec");
   _fivthgroup.AppendMenuItem(MF_STRING, i++, "1 min");
   _fivthgroup.AppendMenuItem(MF_STRING, i++, "2 mins");

   _fivthgroup.EnableMenuItem( Cover.Interval + 12, 1 );
   _fivthgroup.CheckMenuRadioItem( i-5, i-1, Cover.Interval + 12 );

   _sixthgroup.AppendMenuItem(MF_STRING, i++, "No aspect ratio");
   _sixthgroup.AppendMenuItem(MF_STRING, i++, "Correct aspect ratio");

   _sixthgroup.EnableMenuItem( Cover.Aspect + 17, 1 );
   _sixthgroup.CheckMenuRadioItem( i-2, i-1, Cover.Aspect + 17 );

   _seventhgroup.AppendMenuItem(MF_STRING, i++, "Inverted left/right gesture");
   _seventhgroup.CheckMenuItem( i-1, Cover.GestureInverted );

   _eighthgroup.AppendMenuItem(MF_STRING, i++, "Show covers from root folder");
   _eighthgroup.CheckMenuItem( i-1, Cover.RootCovers );
    _eighthgroup.AppendMenuItem(MF_STRING, i++, "Show covers from subfolders");
   _eighthgroup.CheckMenuItem( i-1, Cover.SubCovers );

   _ninthgroup.AppendMenuItem(MF_STRING, i++, "cover.*");
   _ninthgroup.AppendMenuItem(MF_STRING, i++, "folder.*");
   _ninthgroup.AppendMenuItem(MF_STRING, i++, "front.*");
   _ninthgroup.AppendMenuItem(MF_STRING, i++, "back.*");
   _ninthgroup.AppendMenuItem(MF_STRING, i++, "disc.*");
   _ninthgroup.AppendMenuItem(MF_STRING, i++, "%album%.*");

    _tenthgroup.AppendMenuItem(MF_STRING, i, "Current image");

    if ( Cover.Covers && typeof Cover.Covers[ Cover.CurrentCoverNumber ] != 'object' ) {
            fb.trace( Cover.Covers );
            var imagepath = Cover.Covers[ Cover.CurrentCoverNumber ];
            var dir       = imagepath.replace(/\\([^\\]*)$/g, '');
            var imagename = imagepath.replace(/\\([^\\]*)$/g, "$1");
            var ext       = imagename.replace(/(.*)\.([^\.]*)$/,'$2');

            if ( imagename == ('cover.'  + ext )  || FSO.FileExists( dir + '\\cover.'  + ext  ) ) _ninthgroup.EnableMenuItem(   22, 1 );
            if ( imagename == ('folder.' + ext )  || FSO.FileExists( dir + '\\folder.' + ext  ) ) _ninthgroup.EnableMenuItem(   23, 1 );
            if ( imagename == ('front.'  + ext )  || FSO.FileExists( dir + '\\front.'  + ext  ) ) _ninthgroup.EnableMenuItem(   24, 1 );
            if ( imagename == ('back.'   + ext )  || FSO.FileExists( dir + '\\back.'   + ext  ) ) _ninthgroup.EnableMenuItem(   25, 1 );
            if ( imagename == ('disc.'   + ext )  || FSO.FileExists( dir + '\\disc.'   + ext  ) ) _ninthgroup.EnableMenuItem(   26, 1 );

            var album = fb.Titleformat("$replace(%album%,/,-,\,-,:,-,*,-,?,-,\",-,<,-,>,-,|,-)").EvalWithMetadb( Cover.OutputMetadb() );
            if ( imagename == (album + '.' + ext ) || FSO.FileExists( dir + '\\' + album + '.' + ext  ) ) _ninthgroup.EnableMenuItem( 27, 1 );
    }
    else {
            _ninthgroup.EnableMenuItem( 22, 1 );
            _ninthgroup.EnableMenuItem( 23, 1 );
            _ninthgroup.EnableMenuItem( 24, 1 );
            _ninthgroup.EnableMenuItem( 25, 1 );
            _ninthgroup.EnableMenuItem( 26, 1 );
            _ninthgroup.EnableMenuItem( 27, 1 );
            _tenthgroup.EnableMenuItem( 28, 1 );
    }


   _firstgroup.AppendTo(   _menu, MF_STRING, "Focus settings");
   _secondgroup.AppendTo(  _menu, MF_STRING, "Priority settings");
   _thirdgroup.AppendTo(   _menu, MF_STRING, "Exclude from search");
   _fourthgroup.AppendTo(  _menu, MF_STRING, "Cover match settings");
   _fivthgroup.AppendTo(   _menu, MF_STRING, "Interval settings");
   _sixthgroup.AppendTo(   _menu, MF_STRING, "Aspect settings");
    _seventhgroup.AppendTo( _menu, MF_STRING, "Mouse settings");
    _eighthgroup.AppendTo(  _menu, MF_STRING, "Additional settings");

    _menu.AppendMenuSeparator(); 

   _ninthgroup.AppendTo( _menu, MF_STRING, "Rename current image to...");
   _tenthgroup.AppendTo( _menu, MF_STRING, "Delete...");

    _menu.AppendMenuSeparator();
   _menu.AppendMenuItem(MF_STRING, ++i, "Update covers");
    _menu.AppendMenuSeparator();
    _menu.AppendMenuItem(MF_STRING, ++i, "Open folder");
    _menu.AppendMenuItem(MF_STRING, ++i, "Open cover");

    // Open cover option handle
    if ( !Cover.Covers || typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) {
        _menu.EnableMenuItem( 31, 1 );
    }

    if ( !Cover.CachePath && !FSO.FolderExists( Cover.CachePath + '\\' + artist ) ) {
        _menu.EnableMenuItem( 29, 1 );
    }

    _menu.AppendMenuSeparator(); 
    _menu.AppendMenuItem(MF_STRING, ++i, "Settings");

   ret = _menu.TrackPopupMenu(x, y);
   if (ret >= 1 && ret <= 3) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'displayed_cover', Cover.CurrentMode = ret );
        Cover.StopTimer();
      Cover = new CoverShow();
        Cover.Update();
        Cover.StartTimer();
   }
   else if (ret >= 4 && ret <= 5) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'disp_mode',       Cover.DisplayMode = ret - 3);
        Cover.Reset();
        Cover.Update();
   }
   else if (ret >= 6 && ret <= 7) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'cover_priority',  Cover.Priority = ret - 5);
        Cover = new CoverShow();
        Cover.Update();
   }
   else if (ret >= 8 && ret <= 9) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'exclude_covers', ( ret - 7 == Cover.Exclude ) ? Cover.Exclude = 0 : Cover.Exclude = ret - 7 );
        Cover.Reset();
        Cover.Update();
   }
   else if (ret >= 10 && ret <= 11) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'match_pattern', Cover.MatchPattern = ret - 9 );
        Cover.Reset();
        Cover.Update();
   }
   else if (ret >= 12 && ret <= 16) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'interval', Cover.Interval = ret - 12);
      Cover.StopTimer();
        Cover.StartTimer();
   }
   else if (ret >= 17 && ret <= 18) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'covers_aspect', Cover.Aspect = ret - 17 );
        Cover.Reset();
        Cover.Update();
   }
   else if (ret == 19) {
        utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'gesture_inverted', Cover.GestureInverted = Cover.GestureInverted == 1 ? 0 : 1);
    }
   else if (ret == 20) {
        utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'root_covers', Cover.RootCovers = Cover.RootCovers == 1 ? 0 : 1);
        Cover.Reset();
        Cover.Update();
    }
   else if (ret == 21) {
        utils.WriteINI( fb.FoobarPath + 's7e.ini', 'artwork-settings', 'sub_covers', Cover.SubCovers = Cover.SubCovers == 1 ? 0 : 1);
        Cover.Reset();
        Cover.Update();
    }
   else if (ret == 22) {
        try {
            FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\cover.' + ext );
          Cover.Reset();
            Cover.Update();
        } catch(e) { }
   }
   else if (ret == 23) {
        try {
            FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\folder.' + ext );
          Cover.Reset();
            Cover.Update();
        } catch(e) { }
   }
   else if (ret == 24) {
        try {
            FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\front.' + ext );
          Cover.Reset();
            Cover.Update();
        } catch(e) { }
   }
    else if (ret == 25) {
        try {
            FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\back.' + ext );
          Cover.Reset();
            Cover.Update();
        } catch(e) { }
   }
    else if (ret == 26) {
        try {
            FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\disc.' + ext );
          Cover.Reset();
            Cover.Update();
        } catch(e) { }
   }
    else if (ret == 27) {
        try {
            FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\' + album  + '.' + ext );
          Cover.Reset();
            Cover.Update();
        } catch(e) { }
   }
    else if (ret == 28 ) {
      try {
            FSO.DeleteFile( Cover.Covers[ Cover.CurrentCoverNumber ] );
          Cover.Reset();
            Cover.Update();
        } catch(e) { }
   }
   else if (ret == 29 ) {
      Cover.Reset();
        Cover.Update();
   }
   else if (ret == 30 ) {
      WshShell.run( '"' + Cover.MetaPath + '"' );
   }
   else if (ret == 31 ) {
      if ( Cover.Covers[ Cover.CurrentCoverNumber ] ) WshShell.run( '"' + Cover.Covers[ Cover.CurrentCoverNumber ] + '"' );
   }
    else if (ret == 32 ) {
        window.ShowConfigure();
    }
   return true;
}

function on_playback_dynamic_info_track() {

    Cover.Reset();
    Cover.Update();

}

function on_playback_starting() {
    // some
}

function on_playback_stop( Reason ) {
   Cover.StopTimer();
   if ( Reason == 0 ) on_item_focus_change();
}


function on_item_focus_change() {
   
    if ( !fb.IsPlaying || Cover.CurrentMode == 3) { Cover.Update(); }
}

function on_playlist_items_added(playlist) { Cover.Update(); }

function on_playlist_items_removed(playlist, new_count) { Cover.Update(); }

function on_playlist_switch() { Cover.Update(); }

function on_playback_new_track( metadb ){

    Cover.Update( metadb );
    Cover.StartTimer();

}

function on_mouse_mbtn_up(x,y) {

    artist = Cover.FormatMeta('artist', Cover.OutputMetadb() );
    if ( (Cover.CachePath && FSO.FolderExists( Cover.CachePath + '\\' + artist )) || Cover.DisplayMode == 2 ) {
        utils.WriteINI(fb.FoobarPath + 's7e.ini', 'artwork-settings', 'disp_mode', Cover.DisplayMode = Cover.DisplayMode == 1 ? 2 : 1);
        Cover.Reset();
        Cover.Update();
    }

}

function on_notify_data( name, info) {

    if ( info == 'refresh' && name == '314FBCC4-9383-48CD-B2DA-45593D3BE1FF' ) {
        Cover.Reset();
        Cover.Update();
    }
    else if ( info == true && name == '314FBCC4-9383-48CD-B2DA-45593D3BE1FF' ) {
        on_mouse_mbtn_up();
    }
    else if ( name == '314FBCC4-9383-48CD-B2DA-45593D3BE1FF' ) {
        Cover.CachePath = info;
        Cover.Reset();
        Cover.Update();
    }

}

function on_key_down(vkey) {

    if ( vkey == 0x00000021 || vkey == 0x00000026 ) {

        Cover.PrevCover();

    }
    else if ( vkey == 0x00000022 || vkey == 0x00000028 ) {

        Cover.NextCover();

    }
    else if ( vkey == 0x00000023  ) {

        if ( Cover.Covers != undefined ) {

            Cover.CurrentCoverNumber = Cover.Covers.length - 1;

            var tmp = Cover.Covers[ Cover.CurrentCoverNumber ];
            var img;

         try       { img = ( typeof tmp == 'object' ) ? tmp.Clone(0,0,tmp.Width,tmp.Height) : gdi.LoadImageAsync( window.ID, Cover.Covers[ Cover.CurrentCoverNumber ] ); }
            catch (e) { img = undefined; }

            Cover.ChangeImage( img );
            window.Repaint();

        }

    }
    else if ( vkey == 0x00000024  ) {

        if ( Cover.Covers != undefined ) {

            Cover.CurrentCoverNumber = 0;

            var tmp = Cover.Covers[ Cover.CurrentCoverNumber ];
            var img;

         try       { img = ( typeof tmp == 'object' ) ? tmp.Clone(0,0,tmp.Width,tmp.Height) : gdi.LoadImageAsync( window.ID, Cover.Covers[ Cover.CurrentCoverNumber ] ); }
            catch (e) { img = undefined; }

            Cover.ChangeImage( img );
            window.Repaint();

        }

    }

}



function on_timer(id) {
   //if ( Cover.CurrentMode == 2 && Cover.CycleTimer.ID == id ) Cover.NextCover();
}
AHAPXICT.
Гость

Сообщение #66 aspiens » 28.04.2015, 08:20

В продолжении темы картинок и предложенного скрипта

Изображение
вот такая беда. Правда эксперименты продолжаю уже не с вашей сборкой. Не смог победить рандомное воспроизведение и не смог привыкнуть к шрифтам.
aspiens
Новичок
Репутация: 0
С нами: 3 года 4 месяца

Сообщение #67 Yarylka » 12.05.2015, 18:46

Шикарная сборка, были проблемы с тормозами плеера, но разобрался - отключил при загрузке компа kxmixer (использую драйвера к Creative SB Live 5.1 от kXProject). При установленной галочке Default было Random воспроизведение треклиста чего-то нащелкал, когда осваивал интерфейс - сейчас все нормально. Огромное человеческое спасибо за сборку!
Yarylka
Гость

Сообщение #68 vladj » 12.05.2015, 23:07

aspiens, попробуй поменять скрипт на этот...
Код: Выделить всё
//Maxim Terpilovsky's script Artwork (http://terpilovsky.ru))\\\
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_WORDBREAK = 0x00000010;
DT_CALCRECT = 0x00000400;
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 WshShell = new ActiveXObject("WScript.Shell");
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var g_font = gdi.Font("Tahoma", 11);
function CoverShow( metadb ) {
   this.CachedPath = 0;
   // Search for files
   this.Search = function( array, dir) {
      var e = new Enumerator( dir.Files );
      while( !e.atEnd() ) {
         var name = e.item().Name;
         if( name.match(/\.(jpg|jpeg|png|gif|tif|bmp)$/i) ) {
            array.push( e.item().Path );
         }
         e.moveNext();
      }
   }
   
    // Find all covers in the folder
   this.GetExternalCovers = function( path ) {
      var files = [];
      var covers = [];
      try {
         var dir = FSO.GetFile( path ).ParentFolder;
         this.Search(files, dir);
         var e = new Enumerator( dir.SubFolders );
         for(; !e.atEnd(); e.moveNext() ) {
            this.Search(files, e.item() );
         }
      } catch(e) { fb.trace( 'this.GetExternalCovers / path: ' + e.message ); }
      if ( files.length > 0 ) {
         for ( key in files ) {
            var name = files[key];
            if ( name.match(/.*(cover|front|folder).*\.(jpg|jpeg|gif|png)$/i) ) {
               covers.push( name );
               files[key] = null;
            }
         }
         overall = covers;
         for ( key in files ) {
            if ( typeof( files[key] ) == 'string' ) overall.push( files[key] );
         }
         return overall;
      }
      else return new Array();
   }
   this.GetCovers = function( path ) {
               var embedded = this.GetEmbeddedCovers();
               var external = this.GetExternalCovers( path );
               var allcovers = new Array();
               if ( 2== 1 ) allcovers = allcovers.concat(embedded, external);
               else allcovers = allcovers.concat(external, embedded);
               this.Covers = allcovers;
      if ( this.Covers.length > 0 ) {
         try {
            if ( typeof this.Covers[0] == 'object' ) return this.Covers[0];
            else return gdi.Image( this.Covers[0] );
         }
         catch(e) { fb.trace( 'return this.Covers: ' + e.message ); return null; }
      }
      else {
         this.Covers = null;
         return null;
      }
   }
   this.GetEmbeddedCovers = function() {
      var embedded = [];
      for ( c = 0; c < 5; c++) {
         if ( c == 3 ) continue;
         if ( utils.GetAlbumArtEmbedded( this.Metadb.RawPath, c ) )
         embedded.push( utils.GetAlbumArtEmbedded( this.Metadb.RawPath, c ) );
      }
      return embedded;
   }
   this.FindEmbeddedCover = function() {
      return utils.GetAlbumArtEmbedded( this.Metadb.RawPath, art_id = 0);
   }
   this.DrawCover = function(gr) {
    gr.FillGradRect(0,0,window.Width/2,window.Height, -60,RGB(19,30,38),RGB(100,100,100));
    gr.FillGradRect(window.Width/2,0,window.Width/2,window.Height,60,RGB(100,100,100),RGB(19,30,38));
        if ( this.Covers != undefined && !this.CurrentCover ) {
            if ( typeof this.Covers[ this.CurrentCoverNumber ] == 'object' ) {
                this.CurrentCover = this.Covers[ this.CurrentCoverNumber ].Clone(0, 0, this.Covers[ this.CurrentCoverNumber ].Width, this.Covers[ this.CurrentCoverNumber ].Height);
            }
            else {
                this.CurrentCover = gdi.Image( this.Covers[ this.CurrentCoverNumber ] );
            }   
        }
      if ( !this.CurrentCover ) {
        var img = gdi.Image( fb.ProfilePath + "images\\nocover.png" );
        if ( img.Width > window.Width || img.Height > window.Height ) {
                    if ( img.Width / img.Height > window.Width / window.Height ) {
                        var iw = window.Width;
                        var ih = img.Height / ( img.Width / window.Width );
                        img = img.Resize( iw, ih);
                    }
                    else {
                        var ih = window.Height;
                        var iw = img.Width / ( img.Height / window.Height );
                        img = img.Resize( iw, ih);
                    }
                }
                }
      else {
            var img = this.CurrentCover;
                if ( img.Width > window.Width || img.Height > window.Height ) {
                    if ( img.Width / img.Height > window.Width / window.Height ) {
                        var iw = window.Width;
                        var ih = img.Height / ( img.Width / window.Width );
                        img = img.Resize( iw, ih);
                    }
                    else {
                        var ih = window.Height;
                        var iw = img.Width / ( img.Height / window.Height );
                        img = img.Resize( iw, ih);
                    }
                  }
                }
                var iw = ( img.Width > window.Width ) ? window.Width : img.Width;
                var ih = ( img.Height > window.Height ) ? window.Height : img.Height;
                img = img.Resize( iw, ih);
            gr.DrawImage( img,
                (iw < ih) ? ((iw < window.Width) ? ((window.Width - iw)/2) : 0 ) : ((iw >= window.Width) ? 0 : ((window.Width - iw)/2)),
                (iw > ih) ? ((ih < window.Height) ? ((window.Height - ih)/2) : 0 ) : ((ih >= window.Height) ? 0 : ((window.Height - ih)/2)),
                img.Width, img.Height, 0,0, img.Width, img.Height );
   }
     this.ChangeImage = function( val ) {
      this.CurrentCover = val;
   }
   this.NextCover = function() {
      if ( this.Covers != null && this.Covers.length > 1 ) {
         this.CurrentCoverNumber++;
         if ( this.CurrentCoverNumber == this.Covers.length ) {
            this.CurrentCoverNumber = 0;
         }
         try {
            if ( typeof this.Covers[ this.CurrentCoverNumber ] == 'object' ) var temp = this.Covers[ this.CurrentCoverNumber ];
            else var temp = gdi.Image( this.Covers[ this.CurrentCoverNumber ] );
            if ( temp ) {
               this.ChangeImage( temp );
               window.Repaint();
            }
            else this.NextCover();
         } catch (e) {
            this.NextCover();
         }
      }
   }
   this.PrevCover = function() {
      if ( this.Covers != null && this.Covers.length > 1 ) {
         this.CurrentCoverNumber--;
         if ( this.CurrentCoverNumber < 0 ) {
            this.CurrentCoverNumber = this.Covers.length;
         }
         try {
            if ( typeof this.Covers[ this.CurrentCoverNumber ] == 'object' ) var temp = this.Covers[ this.CurrentCoverNumber ];
            else var temp = gdi.Image( this.Covers[ this.CurrentCoverNumber ] );
            if ( temp ) {
               this.ChangeImage( temp );
               window.Repaint();
            }
            else this.PrevCover();
         } catch (e) {
            this.PrevCover();
         }
      }
   }
   this.StopTimer = function() {
      this.CycleTimer ? window.KillTimer( this.CycleTimer ) : '';
   }
   this.StartTimer = function() {
         this.CycleTimer = window.CreateTimerInterval( 7000 );
   }
      this.OutputMetadb = function() {
      return ( fb.IsPlaying ? fb.GetNowPlaying() : ( fb.GetFocusItem(true) ? fb.GetFocusItem(true) : false ));
   }
   this.Update = function( metadb ) {
      this.Metadb = metadb ? metadb : this.OutputMetadb();
      try { this.MetaPath = this.Metadb.Path ? this.Metadb.Path : 0; }
      catch (e) { fb.trace( 'this.Update / this.MetaPath = ' + e.message); this.MetaPath = 0; }
      if ( this.MetaPath ) {
           // fb.trace( 'UPDATED!' );
         this.CurrentCoverNumber = 0;
         this.CurrentCover = this.GetCovers( this.MetaPath );
         this.CachedPath = this.MetaPath;
      }
      else {
         this.Covers = null;
         this.CurrentCover = this.NoCover;
         this.CurrentCover = null;
        }
   }
   this.Update(metadb);
   this.CycleTimer = 0;
   this.TimerStarted = false;
}
var Cover = new CoverShow();
var a, b, g_hover = 0;
 function on_paint( gr ) {
    var text, measure;
    Cover.DrawCover( gr );
    if ( Cover.Covers != null && g_hover ) {
       if ( Cover.Covers.length > 0 ) {
         text = "wheel - on, double-click - view";
         measure = gr.MeasureString( text, g_font, 0, 0, window.Width, 0, 0);
         gr.FillSolidRect( 0, 0, window.Width, 2*measure.Height, RGBA(32,32,32,100));
         gr.GdiDrawText( text, g_font, RGB(255,255,255), 0, 0, window.Width, measure.Height, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);
         if ( typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) text = "Enclosing the track" + Cover.MetaPath.replace(/(.*)\\(.*)\.(.*)$/,'$2.$3') + '"' + " [" + (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length + "]";
         else text = Cover.Covers[ Cover.CurrentCoverNumber ].replace(/(.*)\\(.*)\.(.*)$/,'$2.$3') + " [" + (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length + "]";
      }
      measure = gr.MeasureString( text, g_font, 5, 0, window.Width-6, 0, 0);
      gr.FillSolidRect( 0, window.Height - measure.Height, window.Width, measure.Height, RGBA(32,32,32,100));
      gr.GdiDrawText( text, g_font, RGB(204,219,216), 0, window.Height - measure.Height, window.Width,  measure.Height, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);
   }
}
function on_playback_new_track( metadb ){
    Cover.Update( metadb );
    Cover.StartTimer();
    window.Repaint();
}
function on_mouse_move(x, y) {
   if ( !g_hover ) {
      g_hover = 1;
      window.Repaint();
   }
}
function on_mouse_leave() {
   g_hover = 0;
   window.Repaint();
}
function on_mouse_wheel( step ) {
    (step < 0) ? Cover.NextCover() : Cover.PrevCover();
}
function on_mouse_lbtn_dblclk(x, y) {
 if ( Cover.Covers != undefined )
 {
if( Cover.Covers[ Cover.CurrentCoverNumber ] ) WshShell.run( '"' + Cover.Covers[ Cover.CurrentCoverNumber ] + '"' );
   }
}
function on_playback_stop( Reason ) {
   Cover.StopTimer();
}
function on_playlist_switch() {
    var a = Cover.CachedPath ? Cover.CachedPath : ' ';
    var b = Cover.OutputMetadb() ? Cover.OutputMetadb().Path : ' ';
    if ( a.replace(/(.*)\\(.*)\.(.*)$/,'$1') != b.replace(/(.*)\\(.*)\.(.*)$/,'$1') ) {
      Cover.Update();
      window.Repaint();
   }
}
function on_timer(id) {
   if ( Cover.CycleTimer.ID == id ) {
      Cover.NextCover();
   }
}
Для нормальной работы этого скрипта в корне фубара нужна папка images и в ней любая картинка с названием nocover.png
HTPC Termaltake, eGlobal i5-7200, Asrock Beebox J3160, Onkyo 525E, цап SMSL, фронт Yamaha 8900.
vladj M
Гуру
Аватара
Откуда: Пермский край
Репутация: 350
С нами: 8 лет 7 месяцев

Сообщение #69 AHAPXICT » 13.05.2015, 01:53

vladj, я не отвечал aspiens потому что он указал что использует другую сборку, а в других сборках и проблемы другие, да и вопрос у него был скорее риторический))) В моей "поделке" установлен WSH v1.5.10 и изначально проверил на ней оригинальный скрипт от Maxim Terpilovsky, потом понял что его всё равно нужно чуть переделать и воспользовался уже готовым со сборки Сборка foobar2000 maybe от kgena_ua, который выложил для АНАРХИСТА отлично работает у меня ХР, а этот при переключении уходит в "крэш" (папку создал, Line: 178, Col: 10) Так что тут как говорится 50/50 :smile:
Yarylka, и вам спасибо. Я так понимаю многим пользователям не очень нравится не предсказуемое переключение треков в ELP Playlist при выбранном последовательном воспроизведении треков в случае если оставлен курсор мыши (функция Hover) на самом плей листе. Попытаюсь объяснить как избавится от этой "проблемы" за пару кликов мыши))))
1. Первый вариант уже описывал. Если переключается в зависимости от положения курсора на плейлисте то отключить функцию Menu/Playback/Playback follows cursor
2. Второй вариант. Если функция Playback follows cursor нужна, но раздражает случайное переключение треков в ELP Playlist при оставленном на нём курсоре: Клик ПКМ в окне ELP Playlist --> Setting... -->Вкладка Behaviour --> Mouse Hover Action --> Либо снять галочку, либо изменить функции Item: и Group: на (None) или Popup. Для Popup выбрать нужное время задержки.
Спойлер
ELP.jpg
P.S. На всякий случай, файлы конфигурации для ELP Playlist хранятся в папке B:\themes\DarkOne_v4.0\Others\Settings (где B:\ виртуальный диск)
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Мастер
Аватара
Возраст: 47
Откуда: Киев
Репутация: 160
С нами: 4 года 10 месяцев

Сообщение #70 sot » 31.05.2015, 20:30

Как сделать чтобы в DarkOne отображались не только cover, back, cd, а также inlay, inside и буклеты?
Пробовал так:
Замените исходный скрипт на скрипт от Maxim Terpilovsky, этот скрипт показывает любые картинки, многие его используют в своих сборках.
При этом в консоли всплывает такая ошибка:
Спойлер
Error: WSH Panel Mod ({FF1A308A-F5B2-49E1-B98F-594F180E0BA6}): Ошибка выполнения Microsoft JScript:
Невозможно создание объекта сервером программирования объектов
File: <main>
Ln: 26, Col: 1
<source text only available at compile time>
Код в 26 строке такой:
Код: Выделить всё
var FSO = new ActiveXObject("Scripting.FileSystemObject");
Если его закомментировать то лезет еще одна аналогичная ошибка
Строчка кода в скрипте:
Код: Выделить всё
var WshShell = new ActiveXObject("WScript.Shell");

Мне непонятно почему не создаются объекты, указанные в этих строках кода.
sot
Новичок
Репутация: 1
С нами: 9 лет 7 месяцев

Сообщение #71 AHAPXICT » 31.05.2015, 23:50

sot, честно говоря - без понятия чего не ему не хватает? Судя по заданному вопросу вы опытный пользователь и в системе есть всё что нужно. Может кто из гуру подскажет. В оригинальном скрипте от tedGo по клику средней кнопкой мыши или по ПКМ из меню доступен выбор альтернативных картинок(настройка в меню свойства), туда можно повесить inlay, inside (5 max). Но это не выход так как требуется точное указание пути и названий. У меня этот скрипт, как и сборка foobar2000 maybe и от Максима, работает без проблем, описывал это в предыдущем сообщении. Ждём пока кто что посоветует. :smoke:
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Мастер
Аватара
Возраст: 47
Откуда: Киев
Репутация: 160
С нами: 4 года 10 месяцев

Сообщение #72 sot » 01.06.2015, 00:07

AHAPXICT
Спасибо, что интересуетесь этой проблемой.
У меня этот скрипт, как и сборка foobar2000 maybe и от Максима, работает без проблем
И у меня этот скрипт там работает. Но хотелось бы его в сборке DarkOne запустить.
Может кто из гуру подскажет.
Надеюсь на это, у самого не хватает знаний, но есть желание учиться)
sot
Новичок
Репутация: 1
С нами: 9 лет 7 месяцев

Сообщение #73 AHAPXICT » 01.06.2015, 00:14

sot, слушай чего же ты сразу не сказал что у тебя сборка другая? Как только включил в WSH панели Safe mode сразу эта ошибка и вылезла! Там нужно снять галочку!
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Мастер
Аватара
Возраст: 47
Откуда: Киев
Репутация: 160
С нами: 4 года 10 месяцев

Сообщение #74 sot » 01.06.2015, 00:31

AHAPXICT, можно подробнее, где именно снять галочку?
sot
Новичок
Репутация: 1
С нами: 9 лет 7 месяцев

Сообщение #75 AHAPXICT » 01.06.2015, 00:40

sot, ага...незнаешь!!!))) Menu\File\Preferences\Tools\WSH Panel Mod --> Scripting Host Setting --> Safe Mode снять галочку.
Ну ладно шутки - шутками, когда уверен что в твоей сборке всё работает, то такие вопросы ставят в тупик
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Мастер
Аватара
Возраст: 47
Откуда: Киев
Репутация: 160
С нами: 4 года 10 месяцев

Сообщение #76 sot » 01.06.2015, 00:46

AHAPXICT, спасибо! Как до того, что галочка мешает дошел?
sot
Новичок
Репутация: 1
С нами: 9 лет 7 месяцев

Сообщение #77 AHAPXICT » 01.06.2015, 00:50

sot, был уверен что сборка моя, а у меня галочка снята, поэтому как раз и сразу не дошёл))). Да и об этом на форуме уже сто раз говорили. Большинство скриптов работают только с отключенной Safe Mode
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Мастер
Аватара
Возраст: 47
Откуда: Киев
Репутация: 160
С нами: 4 года 10 месяцев

Сообщение #78 sot » 01.06.2015, 00:53

AHAPXICT тоди з мене пыво)

Добавлено спустя 5 часов 50 минут:
AHAPXICT, вылезла одна проблемка, если проигрывается файл с расширением *.dff(оцифрованый винил) то картинка вообще никакие не показывает. Если подкинуть в такую папку, например файлик с расширением *.flac, то при его проигрывании картинки отображаются.
А вот версия скрипта приведенного выше(после твоего скрипта) от vladj работает как с *.dff так и с *.flac файлами.
Мне больше нравится первый скрипт, там больше функций прицеплено, но беда в том, что то что надо не хочет работать)
sot
Новичок
Репутация: 1
С нами: 9 лет 7 месяцев

Сообщение #79 sot » 02.06.2015, 05:39

2 AHAPXICT Нашел более старую версию скрипта от Максима, в нем проблемы
если проигрывается файл с расширением *.dff(оцифрованый винил) то картинки вообще никакие не показывает
нет. Поковырявшись в 2-х скриптах удалось исправить тот скрипт, который ты выкладывал выше. Заменил 2 функции из старого в новый.
Спойлер
Код: Выделить всё
// Maxim Terpilovsky's script
// http://terpilovsky.ru
// Artwork / Updated 26-04-2011

DT_EDITCONTROL = 0x00002000;
DT_TOP = 0x00000000;
DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_VCENTER = 0x00000004;
DT_BOTTOM = 0x00000008;
DT_WORDBREAK = 0x00000010;
MF_STRING = 0x00000000;
MK_CONTROL = 0x0008;
DT_CALCRECT = 0x00000400;
MF_POPUP = 0x00000010;
MF_SEPARATOR = 0x00000800;

function StrFmt(alignH,alignV,trim,flag){ return ((alignH<<28)|(alignV<<24)|(trim<<20)|flag); }
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 FSO = new ActiveXObject("Scripting.FileSystemObject");
var WshShell = new ActiveXObject("WScript.Shell");

if ( utils.CheckFont( "Segoe UI" ) ) {
var g_font = gdi.Font("Segoe UI", 28);
var g_font2 = gdi.Font("Segoe UI", 11, 1);
var g_font_small = gdi.Font("Segoe UI", 10, 1);
} else {
var g_font = gdi.Font("Tahoma", 12);
var g_font2 = gdi.Font("Tahoma", 11, 1);
var g_font_small = gdi.Font("Tahoma", 10, 1);
}

var tooltip = window.CreateTooltip();
tooltip.SetMaxWidth( 300 );

var arrow_left, arrow_right, info_hover = 0;
try {
var arrow_left = gdi.Image( fb.FoobarPath + "\\themes\\DarkOne\\images\\arrow_left.png" );
var arrow_right = gdi.Image( fb.FoobarPath + "\\themes\\DarkOne\\images\\arrow_right.png" );
var information = gdi.Image( fb.FoobarPath + "\\themes\\DarkOne\\images\\information.png" );
} catch(e) { fb.trace(e.message); }

function CoverShow( metadb ) {

this.CachedPath = 0;
this.CachedCoversNumber = 0;

this.SetMode = function() {

var mode = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'settings', 'displayed_cover') );
if ( !mode ) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'displayed_cover', 1);
var mode = 1;
}
return mode;

}

this.CurrentMode = this.SetMode();

this.SetPriority = function() {

var priority = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'settings', 'cover_priority') );
if ( !priority ) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'cover_priority', 2);
var priority = 2;
}
return priority;

}

this.Priority = this.SetPriority();

this.SetExclude = function() {

var exclude = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'settings', 'exclude_covers') );
if ( isNaN(exclude) ) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'exclude_covers', 0);
var exclude = 0;
}
return exclude;

}
this.Exclude = this.SetExclude();

this.SetPattern = function() {

var pattern = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'settings', 'match_pattern') );
if ( isNaN(pattern) ) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'match_pattern', 1);
var pattern = 1;
}
return pattern;

}
this.MatchPattern = this.SetPattern();

this.SetAspect = function() {

var aspect = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'settings', 'covers_aspect') );
if ( isNaN(aspect) ) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'covers_aspect', 1);
var aspect = 1;
}
return aspect;

}
this.Aspect = this.SetAspect();

this.SetGesture = function() {

var gesture = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'settings', 'gesture_inverted') );
if ( isNaN(gesture) ) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'gesture_inverted', 0);
var gesture = 0;
}
return gesture;

}
this.GestureInverted = this.SetGesture();

this.SetInterval = function() {

var interval = parseInt( utils.ReadINI(fb.FoobarPath + 's7e.ini', 'settings', 'interval') );
if ( isNaN(interval) ) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'interval', 1);
var interval = 1;
}
return interval;

}
this.Interval = this.SetInterval();
this.Intervals = new Array(5000, 15000, 30000, 60000, 120000);

try {

this.NoCover = gdi.Image( fb.ProfilePath + "s7e_files\\images\\nocover.png" );
this.Case = gdi.Image( fb.ProfilePath + "s7e_files\\images\\case.png" );

}
catch(e) { fb.trace( 'this.NoCover / this.Case:' + e.message ); }

this.OutputMetadb = function() {

switch ( this.CurrentMode ) {

case 3 :
return ( fb.GetFocusItem(true) ? fb.GetFocusItem(true) : false );
break;

default:
return ( fb.IsPlaying ? fb.GetNowPlaying() : ( fb.GetFocusItem(true) ? fb.GetFocusItem(true) : false ));

}

}

this.Search = function( array, dir) {

var e = new Enumerator( dir.Files );

while( !e.atEnd() ) {
var name = e.item().Name;
if( name.match(/\.(jpg|jpeg|png|gif|bmp)$/i) ) {
array.push( e.item().Path );
}
e.moveNext();
}

}

this.GetExternalCovers = function( path ) {

var files = [];
var covers = [];
// try - пробуйте
try {
//ParentFolder - Родительская папка
var dir = FSO.GetFile( path ).ParentFolder;
this.Search(files, dir);
var e = new Enumerator( dir.SubFolders );
// SubFolders  - вложенные
for(; !e.atEnd(); e.moveNext() ) {
this.Search(files, e.item() );
}
} catch(e) { fb.trace( 'this.GetExternalCovers / path: ' + e.message ); }

if ( files.length > 0 ) {

files.sort();
// push - нажим (на кнопку ?)
for ( key in files ) {
var name = files[key];
// MatchPattern - совпадает шаблон
if ( this.MatchPattern == 1 ) {
if ( name.match(/.*(cover|front|folder)([^\\]*)\.(jpg|jpeg|gif|png|bmp)$/i) ) {
covers.push( name );
files[key] = null;
}
}
else {
if ( name.match(/\\(cover|front|folder)\.(jpg|jpeg|gif|png|bmp)$/i) ) {
covers.push( name );
files[key] = null;
}
}

}
// overall - полный, всеобщий
overall = covers;

for ( key in files ) {
if ( typeof( files[key] ) == 'string' ) overall.push( files[key] );
}

return overall;

}
else return new Array();

}

this.GetCovers = function( path ) {

switch ( this.Exclude ) {

case 0:

var embedded = this.GetEmbeddedCovers();
var external = this.GetExternalCovers( path );

var allcovers = new Array();

if ( this.Priority == 1 ) allcovers = allcovers.concat(embedded, external);
else allcovers = allcovers.concat(external, embedded);

this.Covers = allcovers;

break;

case 1:

var external = this.GetExternalCovers( path );
this.Covers = external;

break;

case 2:

var embedded = this.GetEmbeddedCovers();
this.Covers = embedded;

break;

default:

}

if ( this.Covers.length > 0 ) {

try {
if ( typeof this.Covers[0] == 'object' ) return this.Covers[0].Clone(0, 0, this.Covers[0].Width, this.Covers[0].Height);
else return gdi.Image( this.Covers[0] );
}
catch(e) { fb.trace( 'return this.Covers: ' + e.message ); return undefined; }

}
else {

this.Covers = undefined;
return 0;

}

}

this.GetEmbeddedCovers = function() {
var embedded = [];
for ( c = 0; c < 5; c++) {
if ( c == 3 ) continue;
if ( utils.GetAlbumArtEmbedded( this.Metadb.RawPath, c ) )
embedded.push( utils.GetAlbumArtEmbedded( this.Metadb.RawPath, c ) );
}
return embedded;
}

this.FindEmbeddedCover = function() {
return utils.GetAlbumArtEmbedded( this.Metadb.RawPath, art_id = 0);
}

this.DrawCover = function(gr) {

}

this.ChangeImage = function( val ) {
this.CurrentCover = val;
}

this.NextCover = function() {

if ( this.Covers != undefined && this.Covers.length > 1 ) {

this.CurrentCoverNumber++;

if ( this.CurrentCoverNumber == this.Covers.length ) {
this.CurrentCoverNumber = 0;
}

try {

if ( typeof this.Covers[ this.CurrentCoverNumber ] == 'object' ) var temp = this.Covers[ this.CurrentCoverNumber ].Clone(0, 0, this.Covers[ this.CurrentCoverNumber ].Width, this.Covers[ this.CurrentCoverNumber ].Height);
else var temp = gdi.Image( this.Covers[ this.CurrentCoverNumber ] );

if ( temp ) {
this.ChangeImage( temp );
window.Repaint();
}
else {
this.NextCover();
}

} catch (e) {

this.NextCover();

}

}
else if ( this.Covers == undefined ) { this.Update(metadb); window.Repaint(); }

}

this.MultipleCovers = function() {

if ( this.Covers != undefined && this.Covers.length > 1 ) return true;
else return false;

}

this.PrevCover = function() {

if ( this.Covers != undefined && this.Covers.length > 1 ) {

this.CurrentCoverNumber--;

if ( this.CurrentCoverNumber < 0 ) {
this.CurrentCoverNumber = this.Covers.length;
}

try {

if ( typeof this.Covers[ this.CurrentCoverNumber ] == 'object' ) var temp = this.Covers[ this.CurrentCoverNumber ].Clone(0, 0, this.Covers[ this.CurrentCoverNumber ].Width, this.Covers[ this.CurrentCoverNumber ].Height);
else var temp = gdi.Image( this.Covers[ this.CurrentCoverNumber ] );

if ( temp ) {
this.ChangeImage( temp );
window.Repaint();
}
else {
this.PrevCover();
}

} catch (e) {

this.PrevCover();

}

}
else if ( this.Covers == undefined ) { this.Update(metadb); window.Repaint(); }

}

this.StopTimer = function() {
this.CycleTimer ? window.KillTimer( this.CycleTimer ) : '';
}

this.StartTimer = function() {

if ( this.CurrentMode == 2 ) {
this.CycleTimer = window.CreateTimerInterval( this.Intervals[ this.Interval ] );
}

}

this.Update = function( metadb) {

this.Metadb = metadb ? metadb : this.OutputMetadb();

try { this.MetaPath = this.Metadb.Path ? this.Metadb.Path : 0; }
catch (e) { fb.trace( 'this.Update / this.MetaPath = ' + e.message); this.MetaPath = 0; }

if ( this.MetaPath ) {

var a = this.CachedPath ? this.CachedPath : ' ';
var b = this.MetaPath;

if ( a.replace(/(.*)\\(.*)\.(.*)$/,'$1') != b.replace(/(.*)\\(.*)\.(.*)$/,'$1') ) {

var update = 1;

}
else {

}

if ( update == 1 ) {

this.Covers = undefined;
this.CurrentCoverNumber = 0;
this.CurrentCover = this.GetCovers( this.MetaPath );
this.CachedPath = this.MetaPath;
this.CachedCoversNumber = this.Covers != undefined ? this.Covers.length : 0;
window.Repaint();
fb.trace('s7e-artwork-panel: covers updated, files reread.');

}

}
else {

fb.trace( 's7e-artwork-panel: can\'t update.' );
this.Covers = undefined;
this.CoverX = null;
this.CoverY = null;
this.CurrentCoverNumber = 0;
this.CurrentCover = 0;
this.CachedPath = '';
this.CachedCoversNumber = 0;
window.Repaint();

}

}

this.Update( metadb);
this.CachedCoversNumber = this.Covers != undefined ? this.Covers.length : 0;
this.CycleTimer = 0;
this.TimerStarted = false;
this.LbtnPressed = 0;
this.X1 = 0;
this.X2 = 0;
this.X = 0;
this.MouseGesture = 0;

this.CoverX = null;
this.CoverY = null;

}

var Cover = new CoverShow();
var a, b, g_hover = 0;

function on_paint( gr ) {

var text, measure;

gr.SetSmoothingMode( 4 );
gr.SetInterpolationMode( 7 );

if ( Cover.Covers != undefined ) {

if ( !Cover.CurrentCover ) {

if ( typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) {
Cover.CurrentCover = Cover.Covers[ Cover.CurrentCoverNumber ].Clone(0, 0, Cover.Covers[ Cover.CurrentCoverNumber ].Width, Cover.Covers[ Cover.CurrentCoverNumber ].Height);
}
else {
Cover.CurrentCover = gdi.Image( Cover.Covers[ Cover.CurrentCoverNumber ] );
}

}

if ( !Cover.CurrentCover ) {
Cover.CoverX = null;
Cover.CoverY = null;
gr.FillSolidRect(0, 0, window.Width, window.Height, RGB(33,33,33));
gr.GdiDrawText( 'Inet Radio', g_font, RGB(128,128,128), 0, 0, window.Width, window.Height, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);
}
else {

gr.FillSolidRect(0, 0, window.Width, window.Height, RGB(33,33,33));

var img = Cover.CurrentCover;

if ( Cover.Aspect ) {

if ( img.Width > window.Width || img.Height > window.Height ) {

if ( img.Width / img.Height > window.Width / window.Height ) {

var iw = window.Width;
var ih = img.Height / ( img.Width / window.Width );
img = img.Resize( iw, ih);

}
else {

var ih = window.Height;
var iw = img.Width / ( img.Height / window.Height );
img = img.Resize( iw, ih);
}

}
else {
var iw = img.Width;
var ih = img.Height;
}

}
else {

var iw = ( img.Width > window.Width ) ? window.Width : img.Width;
var ih = ( img.Height > window.Height ) ? window.Height : img.Height;
img = img.Resize( iw, ih);

}

img = img.CreateRawBitmap();

var x = (iw < ih) ? ((iw < window.Width) ? ((window.Width - iw)/2) : 0 ) : ((iw >= window.Width) ? 0 : ((window.Width - iw)/2));
var y = (iw > ih) ? ((ih < window.Height) ? ((window.Height - ih)/2) : 0 ) : ((ih >= window.Height) ? 0 : ((window.Height - ih)/2));

Cover.CoverX = x;
Cover.CoverY = y;

gr.GdiDrawBitmap( img,
x,
y,
img.Width,
img.Height,
0,0, img.Width, img.Height );

if ( g_hover ) {

if ( information ) gr.DrawImage( information, x, y, 16, 16, 0, 0, 16, 16, 0, 150);

if ( info_hover ) {

var text = '1. Следующее изображение (Левая кн. или колесико мыши)\n\n2. Следующее изображение (Левая кн + жест мыши)\n\n3. Просмотр внешней программой(Ctrl + Левая кн. мыши)';
measure = gr.MeasureString( text, g_font_small, 0, 0, window.Width / 2, 0, DT_LEFT | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);
gr.FillSolidRect( (window.Width - measure.Width - 10) / 2, ( window.Height - measure.Height - 10 ) / 2, measure.Width + 10, measure.Height + 10, RGBA(0,0,0,150));
gr.GdiDrawText( text, g_font_small, RGB(255,255,255), (window.Width - measure.Width) / 2, ( window.Height - measure.Height ) / 2, measure.Width, measure.Height, DT_LEFT | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);

}

measure = gr.MeasureString( Cover.CurrentCover.Width + " ? " + Cover.CurrentCover.Height, g_font_small, 5, 0, window.Width-10, 0, 0);
gr.FillSolidRect( x + img.Width - measure.Width - 10, y + img.Height - measure.Height - 5, measure.Width + 10, measure.Height + 5, RGBA(32,32,32,150));
gr.GdiDrawText( Cover.CurrentCover.Width + " ? " + Cover.CurrentCover.Height, g_font_small, RGB(255,255,255), x + img.Width - measure.Width - 10, y + img.Height - measure.Height - 5, measure.Width + 10, measure.Height + 5, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);

measure = gr.MeasureString( (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length, g_font_small, 5, 0, window.Width-10, 0, 0);
gr.FillSolidRect( x + img.Width - measure.Width - 10, y , measure.Width + 10, measure.Height, RGBA(32,32,32,150));
gr.GdiDrawText( (Cover.CurrentCoverNumber+1) + "/" + Cover.Covers.length, g_font_small, RGB(255,255,255), x + img.Width - measure.Width - 10, y , measure.Width + 10, measure.Height, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);

if ( Cover.MouseGesture ) {

if ( Cover.MouseGesture == 'next' && arrow_right ) {
gr.FillEllipse( window.Width - 18, ( window.Height - arrow_right.Height ) / 2 - 1, 18, 18, RGBA(255,255,255,255));
gr.DrawImage( arrow_right, window.Width - 16, ( window.Height - arrow_right.Height ) / 2, 16, 16, 0, 0, 16, 16, 0, 255);
}
else if ( Cover.MouseGesture == 'prev' && arrow_left ) {
gr.FillEllipse( 0, ( window.Height - arrow_left.Height ) / 2 - 1, 18, 18, RGBA(255,255,255,255));
gr.DrawImage( arrow_left, 0, ( window.Height - arrow_left.Height ) / 2, 16, 16, 0, 0, 16, 16, 0, 255);
}

}

}

var graphics = Cover.CurrentCover.GetGraphics();
Cover.CurrentCover.ReleaseGraphics( graphics );
Cover.CurrentCover.Dispose();
Cover.CurrentCover = 0;

}

}
else {

Cover.CoverX = null;
Cover.CoverY = null;
gr.FillSolidRect(0, 0, window.Width, window.Height, RGB(33,33,33));
gr.GdiDrawText( 'Inet Radio', g_font, RGB(128,128,128), 0, 0, window.Width, window.Height, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_CALCRECT);

}

}

function on_mouse_move(x, y) {

if ( Cover.Covers != undefined && !Cover.X1 ) {

var rep = 0;

if ( Cover.Covers.length > 0 && !g_hover && Cover.Covers[ Cover.CurrentCoverNumber ] ) {

g_hover = 1;

if ( typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) var text = 'Embedded into "' + Cover.MetaPath.replace(/(.*)\\(.*)\.(.*)$/,'$2.$3') + '"';
else {
try { var a = '\nSize: ' + Math.round( FSO.GetFile( Cover.Covers[ Cover.CurrentCoverNumber ] ).size / 1024 ) + " Kb"; }
catch(e) { var a = ''; }
var b = 'Path: ' + Cover.Covers[ Cover.CurrentCoverNumber ];
var text = b + a;
}

tooltip.Text = text;
tooltip.Activate();
var rep = 1;
}

if ( info_hover == 0 && (x >= Cover.CoverX && x <= Cover.CoverX + 16) && (y >= Cover.CoverY && y <= Cover.CoverY + 16) ) {

info_hover = 1;
var rep = 1;

}
else if ( info_hover == 1 && ((x < Cover.CoverX || x > Cover.CoverX + 16) || (y < Cover.CoverY || y > Cover.CoverY + 16)) ) {

info_hover = 0;
var rep = 1;

}

if ( rep == 1 ) window.Repaint();

}
else if ( Cover.MultipleCovers() && Cover.X1 ) {

info_hover = 0;
Cover.X2 = x;

if ( Cover.X1 < Cover.X2 && Math.abs( Cover.X1 - Cover.X2 ) > 8 ) Cover.GestureInverted == 1 ? Cover.MouseGesture = 'next' : Cover.MouseGesture = 'prev';
else if ( Cover.X1 > Cover.X2 && Math.abs( Cover.X1 - Cover.X2 ) > 8 ) Cover.GestureInverted == 1 ? Cover.MouseGesture = 'prev' : Cover.MouseGesture = 'next';

if ( Cover.MouseGesture == 'prev' ^ Cover.MouseGesture == 'next' ) {
window.Repaint();
}

}

}

function on_mouse_leave() {

g_hover = 0;
info_hover = 0;

Cover.X1 = 0;
Cover.X2 = 0;
Cover.X = 0;
Cover.MouseGesture = 0;

tooltip.Deactivate();
window.Repaint();

}

function on_mouse_wheel( step ) {
(step < 0) ? Cover.NextCover() : Cover.PrevCover();
}

function on_mouse_lbtn_down(x, y, mask) {

Cover.LbtnPressed = 1;
Cover.X1 = x;

}

function on_mouse_lbtn_up(x, y, mask) {

if ( !mask && Cover.MultipleCovers() && Cover.X1 ) {

Cover.X2 = x;

if ( Cover.X1 < Cover.X2 && Math.abs( Cover.X1 - Cover.X2 ) > 8 ) Cover.GestureInverted == 1 ? Cover.NextCover() : Cover.PrevCover();
else if ( Cover.X1 > Cover.X2 && Math.abs( Cover.X1 - Cover.X2 ) > 8 ) Cover.GestureInverted == 1 ? Cover.PrevCover() : Cover.NextCover();
else Cover.NextCover();

Cover.LbtnPressed = 0;
Cover.X1 = 0;
Cover.X2 = 0;
Cover.X = 0;
Cover.MouseGesture = 0;

}
else if ( mask == MK_CONTROL ) {

if ( typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) WshShell.run( '"' + Cover.MetaPath.replace(/\\\w*\..*/, '') + '"' );
else if ( Cover.Covers[ Cover.CurrentCoverNumber ] ) WshShell.run( '"' + Cover.Covers[ Cover.CurrentCoverNumber ] + '"' );
}

}

function on_mouse_rbtn_up(x, y) {
var _menu = window.CreatePopupMenu();
var _firstgroup = window.CreatePopupMenu();
var _secondgroup = window.CreatePopupMenu();
var _thirdgroup = window.CreatePopupMenu();
var _fourthgroup = window.CreatePopupMenu();
var _fivthgroup = window.CreatePopupMenu();
var _sixthgroup = window.CreatePopupMenu();
var _seventhgroup = window.CreatePopupMenu();
var _eighthgroup = window.CreatePopupMenu();
var _ninthgroup = window.CreatePopupMenu();
var i = 1;
var ret;

_firstgroup.AppendMenuItem(MF_STRING, i++, "Переключение вручную");
_firstgroup.AppendMenuItem(MF_STRING, i++, "Переключение автоматическое");
_firstgroup.AppendMenuItem(MF_STRING, i++, "Текущий выбор");

_firstgroup.EnableMenuItem( Cover.CurrentMode, 1 );
_firstgroup.CheckMenuRadioItem( 1, i-1, Cover.CurrentMode );

_secondgroup.AppendMenuItem(MF_STRING, i++, "Вложеные обложки");
_secondgroup.AppendMenuItem(MF_STRING, i++, "Внешние обложки");

_secondgroup.EnableMenuItem( Cover.Priority + 3, 1 );
_secondgroup.CheckMenuRadioItem( i-2, i-1, Cover.Priority + 3 );

_thirdgroup.AppendMenuItem(MF_STRING, i++, "Вложеные обложки");
_thirdgroup.AppendMenuItem(MF_STRING, i++, "Внешние обложки");

if ( Cover.Exclude ) {
_thirdgroup.CheckMenuRadioItem( i-2, i-1, Cover.Exclude + 5 );
}

_fourthgroup.AppendMenuItem(MF_STRING, i++, "*ключевое слово*.*");
_fourthgroup.AppendMenuItem(MF_STRING, i++, " ключевое слово.*");

_fourthgroup.EnableMenuItem( Cover.MatchPattern + 7, 1 );
_fourthgroup.CheckMenuRadioItem( i-2, i-1, Cover.MatchPattern + 7 );

_fivthgroup.AppendMenuItem(MF_STRING, i++, "5 секунд");
_fivthgroup.AppendMenuItem(MF_STRING, i++, "15 секунд");
_fivthgroup.AppendMenuItem(MF_STRING, i++, "30 секунд");
_fivthgroup.AppendMenuItem(MF_STRING, i++, "1 минута");
_fivthgroup.AppendMenuItem(MF_STRING, i++, "2 минуты");

_fivthgroup.EnableMenuItem( Cover.Interval + 10, 1 );
_fivthgroup.CheckMenuRadioItem( i-5, i-1, Cover.Interval + 10 );

_sixthgroup.AppendMenuItem(MF_STRING, i++, "По размеру окна");
_sixthgroup.AppendMenuItem(MF_STRING, i++, "Исходное соотношение сторон");

_sixthgroup.EnableMenuItem( Cover.Aspect + 15, 1 );
_sixthgroup.CheckMenuRadioItem( i-2, i-1, Cover.Aspect + 15 );

_seventhgroup.AppendMenuItem(MF_STRING, i++, "Инвертировать лев./прав. жест");
_seventhgroup.CheckMenuItem( i-1, Cover.GestureInverted );

_eighthgroup.AppendMenuItem(MF_STRING, i++, "cover.*");
_eighthgroup.AppendMenuItem(MF_STRING, i++, "folder.*");
_eighthgroup.AppendMenuItem(MF_STRING, i++, "front.*");
_eighthgroup.AppendMenuItem(MF_STRING, i++, "back.*");
_eighthgroup.AppendMenuItem(MF_STRING, i++, "disc.*");
_eighthgroup.AppendMenuItem(MF_STRING, i++, "%album%.*");

_ninthgroup.AppendMenuItem(MF_STRING, i, "Текущее изображение");

if ( Cover.Covers && typeof Cover.Covers[ Cover.CurrentCoverNumber ] != 'object' ) {
var imagepath = Cover.Covers[ Cover.CurrentCoverNumber ];
var dir = imagepath.replace(/(.*)\\(.*)\.(.*)$/,'$1');
var imagename = imagepath.replace(/(.*)\\(.*)\.(.*)$/,'$2.$3');
var ext = imagename.replace(/(.*)\.(.*)$/,'$2');

if ( imagename == ('cover.' + ext ) || FSO.FileExists( dir + '\\cover.' + ext ) ) _eighthgroup.EnableMenuItem( 18, 1 );
if ( imagename == ('folder.' + ext ) || FSO.FileExists( dir + '\\folder.' + ext ) ) _eighthgroup.EnableMenuItem( 19, 1 );
if ( imagename == ('front.' + ext ) || FSO.FileExists( dir + '\\front.' + ext ) ) _eighthgroup.EnableMenuItem( 20, 1 );
if ( imagename == ('back.' + ext ) || FSO.FileExists( dir + '\\back.' + ext ) ) _eighthgroup.EnableMenuItem( 21, 1 );
if ( imagename == ('disc.' + ext ) || FSO.FileExists( dir + '\\disc.' + ext ) ) _eighthgroup.EnableMenuItem( 22, 1 );

var album = fb.Titleformat("$replace(%album%,/,-,\,-,:,-,*,-,?,-,\",-,<,-,>,-,|,-)").EvalWithMetadb( Cover.OutputMetadb() );
if ( imagename == (album + '.' + ext ) || FSO.FileExists( dir + '\\' + album + '.' + ext ) ) _eighthgroup.EnableMenuItem( 23, 1 );
}
else {
_eighthgroup.EnableMenuItem( 18, 1 );
_eighthgroup.EnableMenuItem( 19, 1 );
_eighthgroup.EnableMenuItem( 20, 1 );
_eighthgroup.EnableMenuItem( 21, 1 );
_eighthgroup.EnableMenuItem( 22, 1 );
_eighthgroup.EnableMenuItem( 23, 1 );
_ninthgroup.EnableMenuItem( 24, 1 );
}

_menu.AppendMenuItem(MF_STRING | MF_POPUP, _firstgroup.ID, "Режимы просмотра");
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _secondgroup.ID, "Приоритет просмотра");
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _thirdgroup.ID, "Исключить из просмотра");
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _fourthgroup.ID, "Настройки соответствия");
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _fivthgroup.ID, "Интервалы переключения");
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _sixthgroup.ID, "Размер изображения");
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _seventhgroup.ID, "Жесты мыши");
_menu.AppendMenuSeparator();
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _eighthgroup.ID, "Переименовать изображение в...");
_menu.AppendMenuItem(MF_STRING | MF_POPUP, _ninthgroup.ID, "Удалить...");
_menu.AppendMenuSeparator();
_menu.AppendMenuItem(MF_STRING, ++i, "Остановить просмотр");
_menu.AppendMenuItem(MF_STRING, ++i, "Просмотр внешней программой");

if ( !Cover.Covers || typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) {
_menu.EnableMenuItem( 26, 1 );
}

ret = _menu.TrackPopupMenu(x, y);
if (ret >= 1 && ret <= 3) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'displayed_cover', ret);
Cover = new CoverShow();
window.Repaint();
}
else if (ret >= 4 && ret <= 5) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'cover_priority', ret - 3);
Cover = new CoverShow();
window.Repaint();
}
else if (ret >= 6 && ret <= 7) {
if ( ( ret - 5 ) == Cover.Exclude ) utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'exclude_covers', 0);
else utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'exclude_covers', ret - 5);
Cover = new CoverShow();
window.Repaint();
}
else if (ret >= 8 && ret <= 9) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'match_pattern', ret - 7 );
Cover.MatchPattern = ret - 7;
Cover = new CoverShow();
window.Repaint();
}
else if (ret >= 10 && ret <= 14) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'interval', ret - 10);
Cover.Interval = ret - 10;
Cover.StopTimer();
Cover.StartTimer();
window.Repaint();
}
else if (ret >= 15 && ret <= 16) {
utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'covers_aspect', ret - 15);
Cover.Aspect = ret - 15;
window.Repaint();
}
else if (ret == 17) {
if ( Cover.GestureInverted == 1 ) utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'gesture_inverted', 0);
else utils.WriteINI( fb.FoobarPath + 's7e.ini', 'settings', 'gesture_inverted', 1);
Cover.GestureInverted = Cover.GestureInverted == 1 ? 0 : 1;
}
else if (ret == 18) {
try {
FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], dir + '\\cover.' + ext );
Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\cover.' + ext;
window.Repaint();
} catch(e) { }
}
else if (ret == 19) {
try {
FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], dir + '\\folder.' + ext );
Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\folder.' + ext;
window.Repaint();
} catch(e) { }
}
else if (ret == 20) {
try {
FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], dir + '\\front.' + ext );
Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\front.' + ext;
window.Repaint();
} catch(e) { }
}
else if (ret == 21) {
try {
FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], dir + '\\back.' + ext );
Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\back.' + ext;
window.Repaint();
} catch(e) { }
}
else if (ret == 22) {
try {
FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], dir + '\\disc.' + ext );
Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\disc.' + ext;
window.Repaint();
} catch(e) { }
}
else if (ret == 23) {
try {
FSO.MoveFile( Cover.Covers[ Cover.CurrentCoverNumber ], dir + '\\' + album + '.' + ext );
Cover.Covers[ Cover.CurrentCoverNumber ] = dir + '\\' + album + '.' + ext;
window.Repaint();
} catch(e) { }
}
else if (ret == 24 ) {
try {
if ( Cover.Covers && Cover.Covers[ Cover.CurrentCoverNumber ] ) {
FSO.DeleteFile( Cover.Covers[ Cover.CurrentCoverNumber ] );
Cover = new CoverShow();
window.Repaint();
}
} catch(e) { }
}
else if (ret == 25 ) {
Cover = new CoverShow();
window.Repaint();
}
else if (ret == 26 ) {
if ( Cover.Covers && typeof Cover.Covers[ Cover.CurrentCoverNumber ] == 'object' ) WshShell.run( '"' + Cover.MetaPath.replace(/\\\w*\..*/, '') + '"' );
else if ( Cover.Covers && Cover.Covers[ Cover.CurrentCoverNumber ] ) WshShell.run( '"' + Cover.Covers[ Cover.CurrentCoverNumber ] + '"' );
}
return true;
}

function on_playback_stop( Reason ) {

Cover.StopTimer();
if ( Reason == 0 ) on_item_focus_change();

}

function on_item_focus_change() {

Cover.Update();

}

function on_playlist_switch() {

Cover.Update();

}

function on_playback_new_track( metadb ){

Cover.Update( metadb );

Cover.StartTimer();

}

function on_timer(id) {

if ( Cover.CurrentMode == 2 && Cover.CycleTimer.ID == id ) {
Cover.NextCover();
}

}
sot
Новичок
Репутация: 1
С нами: 9 лет 7 месяцев

Сообщение #80 AHAPXICT » 02.06.2015, 18:13

sot, это хорошо что сам разобрался как .dff "пофиксить". А в том скрипте что vladj выкладывал от 12.05.2015 для корректной работы на WSH Panel Mod v1.5.10 нужно заменить строки:this.CycleTimer ? window.KillTimer( this.CycleTimer ) : ''; на this.CycleTimer ? window.ClearInterval( this.CycleTimer ) : ''; и this.CycleTimer = window.CreateTimerInterval( 7000 ); на this.CycleTimer = window.SetInterval(on_timer, 7000); . Так как старые команды удалены из новой версии WSH панели.
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Мастер
Аватара
Возраст: 47
Откуда: Киев
Репутация: 160
С нами: 4 года 10 месяцев

Пред.След.

Вернуться в Релизы сборок