Конфигурация s8e 1.6.6 [11.12.2016]

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

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

Сообщение #1 Максим » 07.02.2010, 17:15

Конфигурация s8e

Скриншоты:
Изображение

Ссылки:
Последний раз редактировалось Максим 11.12.2016, 05:27, всего редактировалось 24 раз(а).
Максим M
Автор темы
Аватара
Репутация: 93
С нами: 17 лет


Сообщение #41 Aketo » 11.06.2010, 18:36

Только нажатие на кнопку, колесиком нормаль )
Aketo
Репутация: 0
С нами: 14 лет 1 месяц

Сообщение #42 Максим » 12.06.2010, 08:53

Aketo
Да, и вправду слишком медленно. Исправил :)
Максим M
Автор темы
Аватара
Репутация: 93
С нами: 17 лет

Сообщение #43 rusline » 08.10.2012, 11:12

из всех сборок понравилась именно эта. Очень удобная)
Но у меня возник вопрос, есть ли возможность убрать строку где ластфм, гугл, и прочее, и добавить туда кнопки, такие как "копировать", "переместить", ибо прослушиваю много композиций и сразу распределяю их по папкам: лучшее, хорошее и делит :)
rusline
Репутация: 1
С нами: 11 лет 5 месяцев

Сообщение #44 vladj » 08.10.2012, 12:36

Естественно можно, вот только сомневаюсь, что для Вас кто-то займётся этим...Скачать, поставить, настроить,
изменить кнопки, заархивировать, отправить Вам, удалить у себя.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Сообщение #45 Izotop » 08.10.2012, 22:45

2rusline,
Не отчаивайтесь.
Шансы есть и всегда они реальны.
Я тоже не использую LastFM, рейтинг и всякие там поисковики из под плеера.
Есть настроение сделать сборку под себя? ;)
Izotop M
Аватара
Откуда: Зеленоград - Харьков
Репутация: 69
С нами: 15 лет 4 месяца

Сообщение #46 vladj » 08.10.2012, 22:48

Удалять нужно не строку, а изменить название кнопок и естественно скрипт, что-бы они работали по назначению.
Ведь требуются новые кнопки, а тут мы как раз и имеем строку с ними, за которую отвечает скрипт в 10-ой снизу панели WSH,
Самое простое зто изменить название кнопок, на это уйдёт 1-2 минуты, далее засада,даже один лищний значок, нехватка его,
буковка, кавычки, многое приводит к краху скрипта.
Потому перед его изменением сохраняем скрипт, щёлкаем Tools внизу, Export и сохраняем в удобное место.
При крахе делаем импорт и всё возвратится на своё место.
Возится с этим скриптом пока нет желания, попробуй сам, место ведь я указал...Удачи.
Изображение
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Сообщение #47 rusline » 09.10.2012, 09:47

попытаюсь разобраться)
и еще возник вопрос, в Сборке от vadimsva (рус.), когда перетаскиваешь в плейлист папку с миксом (в этой папке также лежит cue файл к нему), то в плейлисте микс автоматически разбивается на треке, а в этой сборке нужно вручную переносить cue файл в плейлист, чтобы разбить микс. Как это автоматизировать в этой сборке?:)

Добавлено спустя 54 минуты 57 секунд:
раз уж тут пошла тема про замену функций этих значков, то подскажите каково значение функций copy to и прочее, то есть, там есть скрипт, например, undo: new Button( "Назад", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Undo"); }),, то бишь значения берутся из RunMainMenuCommand, а какая команда для правой кнопки мыши? (конкретно? пкм в плейлисте -> File operations/Copy to) надеюсь поможете в этой проблеме)
rusline
Репутация: 1
С нами: 11 лет 5 месяцев

Сообщение #48 vladj » 09.10.2012, 12:55

Команды посмотри в настройке горячих клавиш, в твоём случае наверное будет
{fb.RunContextCommand("File operations/Copy to");});
Кстати вот скрипт оттуда с кнопками:
Код: Выделить всё
/// DarkOne v2.1 Additional Buttons Panel
// Code by T.P Wang and tedGo
// ==PREPROCESSOR==
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Script.js"
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Button Script.js"
// ==/PREPROCESSOR==
window.MinWidth = window.MaxWidth = 268;
// ----- CREATE BUTTONS ---------------------------------------------
var imgPath = fb.foobarPath + "themes\\DarkOne\\Buttons\\Control\\";
var btn_font = gdi.Font("tahoma", 12, 0);
Buttons.a = new Button(00, 12, 60, 14, {normal: imgPath + "AddOnAlone.png", hover: imgPath + "AddOnAloneMH.png"}, function(){fb.RunContextCommand("Службы/Last.fm Artist Info");});
Buttons.b = new Button(80, 12, 60, 14, {normal: imgPath + "AddOnAlone.png", hover: imgPath + "AddOnAloneMH.png"}, function(){fb.RunContextCommand("Службы/Google Artist");});
Buttons.c = new Button(160, 12, 60, 14, {normal: imgPath + "AddOnAlone.png", hover: imgPath + "AddOnAloneMH.png"}, function(){fb.RunContextCommand("Службы/Google Artist + title");});
Buttons.d = new Button(240, 12, 60, 14, {normal: imgPath + "AddOnAlone.png", hover: imgPath + "AddOnAloneMH.png"},  function(){fb.RunContextCommand("Службы/CoverFetcher");});
Buttons.e = new Button(320, 12, 60, 14, {normal: imgPath + "AddOnAlone.png", hover: imgPath + "AddOnAloneMH.png"},  function(){fb.RunContextCommand("Службы/Discogs");});
// ----- DRAW -------------------------------------------------------
function on_paint(gr) {
   if (!window.IsTransparent) {
    gr.FillSolidRect(0, 0, window.Width, window.Height, ui_backcol);
    gr.FillGradRect(0, 0, window.Width, 90, 90, RGBA(151, 180, 202, 28), 0);
   }
buttonsDraw(gr);
   gr.GdiDrawText("Last.fm Art.", btn_font, ui_btntxtcol, 00, 0, 70, 12, 33);
   gr.GdiDrawText("Google Art. ", btn_font, ui_btntxtcol, 84, 0, 60, 12, 32);
   gr.GdiDrawText("GArt.+title", btn_font, ui_btntxtcol, 154, 0, 60, 12, 34);
   gr.GdiDrawText("Rezerv", btn_font, ui_btntxtcol, 240, 0, 60, 12, 34);
   gr.GdiDrawText("Discogs", btn_font, ui_btntxtcol, 320, 0, 60, 12, 34);
   }
В CREATE BUTTONS themes\\DarkOne\\Buttons\\Control это путь к кнопкам.
00, 12, 60, 14 расположение по горизонтали, вертикали, ширина кнопки и высота.
Далее в строке название нажатой и не нажатой кнопок (имиджи их лежат напоминаю -см,2 строчки выше)
Ещё ниже, в DRAW прописывается текст с названием кнопки.
Имея скрипт готовый с кнопками и почитав это, тебе наверное проще будет понять суть создания кнопок.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Сообщение #49 rusline » 09.10.2012, 13:48

ну к DarkOne v2.1 у меня вопросов не было)

а вот попробовал на s7e заменить скрипты. получилось следующее
пытался заменить значение функции crop на copy to
Код: Выделить всё
// Maxim Terpilovsky's script
// http://terpilovsky.ru
// Buttonbar Panel / Updated 28-08-2011




MF_SEPARATOR = 0x00000800;
MF_ENABLED = 0x00000000;
MF_GRAYED = 0x00000001;
MF_DISABLED = 0x00000002;
MF_UNCHECKED = 0x00000000;
MF_CHECKED = 0x00000008;
MF_STRING = 0x00000000;

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


// Config variables
// Variables
var my_ini_values = new Array;
var default_values = {"AAD_path" : "c:\\Program Files\\AlbumArtDownloaderXUI\\AlbumArt.exe"};

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


var mode;
var g_move = null;
var show_buttons;
var Active_array = [];
var WshShell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var Sup_Buttons = [{name:"Last.fm"}, {name:"Google"}, {name:"Discogs"}, {name:"Allmusic"}, {name:"Selection"}, {name:"Others"}];
var g_button_down = null;

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


// Script functions
mode = parseInt( utils.ReadINI( fb.FoobarPath + 's7e.ini', 'buttonbar-settings', 'buttonbar_mode', 1) );


// Metadb
OutputMetadb = function() {
    if ( mode == 2 ) return ( fb.GetFocusItem(true) ? fb.GetFocusItem(true) : false );
    else return ( fb.IsPlaying ? fb.GetNowPlaying() : ( fb.GetFocusItem(true) ? fb.GetFocusItem(true) : false ));
}


function my_ini_write(text) {
   var fso, f, r, write = text;
   var ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   var filename = fb.FoobarPath + "s7e.data";
   try {
      f = fso.OpenTextFile(filename, ForWriting, true)
      f.Write(write);
      f.Close();
   } catch(e) {
      fb.trace(e.message);
   }
}

function object2string(obj) {
    var val, output = "";
    if (obj) {   
        for (var i in obj) {
            val = obj[i];
            switch (typeof val) {
                case ("string"):
                    output += i + "=" + val + "\r";
                    break;
                default:
                    output += i + "=" + val + "\r";
            }
        }
        output = output.substring(0, output.length-1);
    }
    return output;
}

function my_ini_read() {
   var fso, f, r, b;
   var ForReading = 1, ForWriting = 2;
   var filename = fb.FoobarPath + "s7e.data";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if ( fso.FileExists(filename) ) {
      f = fso.OpenTextFile(filename, ForReading);
      r =  f.ReadAll();
      var a = r.split("\n");
      for (key in a) {
         b = a[key].split("=");
         my_ini_values[b[0]] = b[1];
      }
      return my_ini_values;
   }
   else return false;

}




if ( !my_ini_read() ) my_ini_write(object2string(default_values));



buttons = {
//   reset: new Button( "..", "All", function() { show_buttons = null; update(); window.Repaint(); })
   lastfm_song: new Button( "Song", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')) + "/_/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%title%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') )); }),
   lastfm_album: new Button( "Album", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')) + "/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') )); }),
   lastfm_artist: new Button( "Artist", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) )).replace(/%20/g,'+') ); }),
   lastfm_group: new Button( "Group", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.last.fm/community/groups/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')); }),
   lastfm_images: new Button( "Images", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')) + "/+images" ); }),
   lastfm_events: new Button( "Events", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.last.fm/events/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') ); }),
   lastfm_search: new Button( "Search by Artist", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.last.fm/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=all" ); }),
   google_artist: new Button( "Artist", Sup_Buttons[1].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.google.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&ie=utf-8"); }),
   google_album: new Button( "Album", Sup_Buttons[1].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.google.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist% %album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&ie=utf-8"); }),
   google_title: new Button( "Song", Sup_Buttons[1].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.google.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist% %title%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&ie=utf-8"); }),

    discogs_artist: new Button( "Artist", Sup_Buttons[2].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.discogs.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=artists&btn=Search"); }),
   discogs_album: new Button( "Album", Sup_Buttons[2].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.discogs.com/search?q=" + encodeURIComponent( fb.TitleFormat("%album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=releases&btn=Search"); }),
   discogs_all: new Button( "Artist - Album", Sup_Buttons[2].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.discogs.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist% %album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=all&btn=Search"); }),

   allmusic_artist: new Button( "Artist", Sup_Buttons[3].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.allmusic.com/search/artist/" + encodeURIComponent( fb.TitleFormat("$ascii(%artist%)").EvalWithMetadb(OutputMetadb()) )); }),
   allmusic_album: new Button( "Album", Sup_Buttons[3].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.allmusic.com/search/album/" + encodeURIComponent( fb.TitleFormat("$ascii(%album%)").EvalWithMetadb(OutputMetadb()) )); }),
   allmusic_title: new Button( "Song", Sup_Buttons[3].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.allmusic.com/search/song/" + encodeURIComponent( fb.TitleFormat("$ascii(%title%)").EvalWithMetadb(OutputMetadb()) )); }),

    undo: new Button( "Назад", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Undo"); }),
   redo: new Button( "Вперед", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Redo"); }),
   sort_by_3d: new Button( "Сортировка", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Sort/Sort by..."); }),
   sort_by_fields: new Button( "Sort by fields", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Sort/Sort by fields..."); }),
   select_all: new Button( "Выбрать всё", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Select All"); }),
   copy_to: new Button( "Копировать в...", Sup_Buttons[4].name, function() { fb.RunContextCommand("File operations/Copy to..."); }),
   reverse_selection: new Button( "Reverse", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Sort/Reverse"); }),
   remove_selection: new Button( "Remove", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Remove"); }),
   copy_to: new Button( "Копировать в...", Sup_Buttons[4].name, function() { fb.RunContextCommand("File operations/Copy to"); }),

    wiki_artist: new Button( "Wikipedia Artist", Sup_Buttons[5].name, function() { if ( OutputMetadb() ) WshShell.run("http://en.wikipedia.org/wiki/Special:Search?search=" + encodeURIComponent(fb.TitleFormat("$replace(%artist%, ,_)").EvalWithMetadb(OutputMetadb()))); }),
   mb_artist: new Button( "MusicBrainz Artist", Sup_Buttons[5].name, function() { if ( OutputMetadb() ) WshShell.run("http://musicbrainz.org/search?query=" + encodeURIComponent(fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb())) + "&type=artist"); }),
   //aad_album: new Button( "Album Art", Sup_Buttons[5].name, function() { WshShell.run('"c:\\Program Files\\AlbumArtDownloaderXUI\\AlbumArt.exe" /ar "' + fb.TitleFormat("%album artist%").Eval(true) + '" /al "' + fb.TitleFormat("%album%").Eval(true) + '" /path "' + fb.TitleFormat("$replace(%path%,%filename_ext%,)folder.jpg").Eval(true) + '"'); }),
   reset: new Button( "..", "All", function() { show_buttons = null; buttons_num = null; update(); window.Repaint(); })

}



if ( fso.FileExists( my_ini_values["AAD_path"] ) ) {
   buttons.aad_album = new Button( "Album Art", Sup_Buttons[5].name, function() { if ( fb.GetFocusItem() ) WshShell.run('"' + my_ini_values["AAD_path"] + '" /ar "' + fb.TitleFormat("%album artist%").EvalWithMetadb(fb.GetFocusItem()) + '" /al "' + fb.TitleFormat("%album%").EvalWithMetadb(fb.GetFocusItem()) + '" /path "' + fb.TitleFormat("$replace(%path%,%filename_ext%,)folder.jpg").EvalWithMetadb(fb.GetFocusItem()) + '"'); });
}
else if ( fso.FileExists( default_values.AAD_path ) ) {
   buttons.aad_album = new Button( "Album Art", Sup_Buttons[5].name, function() { if ( fb.GetFocusItem() ) WshShell.run('"' + default_values.AAD_path + '" /ar "' + fb.TitleFormat("%album artist%").EvalWithMetadb(fb.GetFocusItem()) + '" /al "' + fb.TitleFormat("%album%").EvalWithMetadb(fb.GetFocusItem()) + '" /path "' + fb.TitleFormat("$replace(%path%,%filename_ext%,)folder.jpg").EvalWithMetadb(fb.GetFocusItem()) + '"'); });
}




var MyButtons = new Array(
   buttons.reset,
   buttons.lastfm_song,
   buttons.lastfm_album,
   buttons.lastfm_artist,
   buttons.lastfm_group,
   buttons.lastfm_events,
   buttons.lastfm_images,
   buttons.lastfm_search,
   buttons.google_artist,
   buttons.google_album,
   buttons.google_title,
   buttons.discogs_artist,
   buttons.discogs_album,
   buttons.discogs_all,
   buttons.allmusic_artist,
   buttons.allmusic_album,
   buttons.allmusic_title,
   buttons.undo,
   buttons.redo,
   buttons.sort_by_3d,
   buttons.sort_by_fields,
   buttons.select_all,
   buttons.random_selection,
   buttons.coy_to,
   buttons.reverse_selection,
   buttons.remove_selection,
   buttons.mb_artist,
   buttons.wiki_artist,
   buttons.aad_album
);



var buttons_num = MyButtons.length;


function Button(name, sup, func) {
   this.name = name;
   this.sup = sup;
   this.func = func;

   this.onClick = function () {
      this.func && this.func();
   }
}

function update() {

   if ( show_buttons ) {
      Active_array = [];

      for (var i in MyButtons ) {

         if ( show_buttons != MyButtons[i].sup && MyButtons[i].sup != "All" ) continue;
         else {
            Active_array.push(MyButtons[i]);
         }
      }
   }
   else Active_array = Sup_Buttons;

}

update();


function on_paint(gr){
   gr.SetTextRenderingHint(5);
   gr.SetSmoothingMode(2);
   var ww = window.Width;
   var wh = window.Height;
   var n;
   var t_color;

   try {
      arrow_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\arrow_down_black.png" );
   } catch(e) { fb.trace(e.message); }


   if ( g_move != undefined ) {
      gr.FillGradRect(1+g_move*ww/Active_array.length, 1, ww/Active_array.length - 2, (wh-1)/2, 90, RGB(248,251,254), RGB(237,242,250));
      gr.FillGradRect(1+g_move*ww/Active_array.length, wh/2, ww/Active_array.length - 2, (wh-3)/2, 90, RGB(215,228,244), RGB(193,210,232));
      gr.DrawRoundRect(1+g_move*ww/Active_array.length, 1, ww/Active_array.length - 3, wh - 3, 4, 4, 1, RGB(255,255,255));
      gr.DrawRoundRect(g_move*ww/Active_array.length, 0, ww/Active_array.length-1, wh-1, 4, 4, 1, RGB(170,190,210));
   }

   if ( g_button_down != undefined ) {
      gr.FillGradRect(1+g_button_down*ww/Active_array.length, 1, ww/Active_array.length - 2, (wh-1)/2, 90, RGB(225,235,245), RGB(216,228,241));
      gr.FillGradRect(1+g_button_down*ww/Active_array.length, 0, ww/Active_array.length - 2, 3, 90, RGB(201,212,228), RGB(221,232,241));
      gr.FillGradRect(1+g_button_down*ww/Active_array.length, (wh-1)/2, ww/Active_array.length - 2, (wh-3)/2, 90, RGB(207,219,236), RGB(207,220,237));
      gr.DrawRoundRect(g_button_down*ww/Active_array.length, 0, ww/Active_array.length-1, wh-1, 4, 4, 1, RGB(170,190,210));
   }


   for ( n=0; n<Active_array.length; n++ ) {

         if ( n == g_move ) t_color = RGB(0,0,0);
         else t_color = Active_array[n].name == '..' ? RGB(160,160,160) : RGB(30,50,90);

            gr.GdiDrawText( Active_array[n].name == '..' ? '(' + show_buttons + ')\n' + Active_array[n].name : Active_array[n].name, Active_array[n].name == '..' ? g_font2 : g_font, t_color, 2 + n * ww / Active_array.length, 0, ww / Active_array.length - 4, wh, 0x00000001 | 0x00000004 | 0x00040000 | 0x00000400);
            var string = gr.MeasureString(Active_array[n].name, g_font, 2 + n * ww / Active_array.length, 0, ww / Active_array.length - 4, wh, 0x00000001 | 0x00000004 | 0x00040000 | 0x00000400);
            if ( show_buttons == null && arrow_image ) gr.DrawImage( arrow_image, n * ww / Active_array.length + ( ww / Active_array.length / 2 ) + string.Width / 2 + 5, (wh - 10)/2, 14, 10, 0, 0, 16, 16, 0, 255);

   }


}


function on_mouse_lbtn_down(x, y, mask) {
    g_move = null;
   g_button_down = Math.floor( x / (window.Width/Active_array.length) );
   window.Repaint();
}


function on_mouse_lbtn_up(x,y){
   g_button_down = null;
   window.Repaint();

   var i = Math.floor( x / (window.Width/Active_array.length) );

    if ( i < Active_array.length ) {

        try {

            if ( show_buttons ) Active_array[i].onClick();
            else {
                show_buttons = Sup_Buttons[i].name;
                update();
            }

        }
        catch(e) { }

    }

}


function on_mouse_move(x,y){

   window.SetCursor(32649);
   //if ( !g_button_down && g_move != Math.floor( x / (window.Width/Active_array.length) ) ) {
   if ( !g_button_down && g_move != Math.floor( x / (window.Width/Active_array.length) ) ) {

        if ( x < window.Width ) {

            g_move = Math.floor( x / ( window.Width/Active_array.length ) );

            //fb.trace( 'x=' + x + '| g_move=' + g_move + ' | Active_array.length=' + Active_array.length + ' | window.Width=' + window.Width + ' | Active_array[g_move].name=' + Active_array[g_move].name);

            try {

                if ( g_move < Active_array.length ) {
                    tooltip.Text = Active_array[g_move].name;
                    tooltip.Activate();
                    window.Repaint();
                }

            }
            catch(e) { }

        }

   }

}


function on_mouse_wheel(delta) {
   if ( delta > 0 && show_buttons ) {
      show_buttons = null;
      update();
      window.Repaint();
   }
}


function on_mouse_leave() {
   g_move = null;
   window.SetCursor( 32512 );
    tooltip.Deactivate();
   window.Repaint();
}


function on_mouse_rbtn_up(x, y) {
   var _menu = window.CreatePopupMenu();
   var i = 1;
   var ret;
   
   _menu.AppendMenuItem(MF_STRING, i++, "Playing item");
   _menu.AppendMenuItem(MF_STRING, i, "Current selection");
   _menu.EnableMenuItem( mode, 1 );
   _menu.CheckMenuRadioItem( 1, i, mode );


   ret = _menu.TrackPopupMenu(x, y);
   if (ret >= 1 && ret <= i) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'buttonbar-settings', 'buttonbar_mode', ret);
      mode = ret;
      window.Repaint();
   }

   return true;
}

оригинал скрипта
Код: Выделить всё
// Maxim Terpilovsky's script
// http://terpilovsky.ru
// Buttonbar Panel / Updated 28-08-2011




MF_SEPARATOR = 0x00000800;
MF_ENABLED = 0x00000000;
MF_GRAYED = 0x00000001;
MF_DISABLED = 0x00000002;
MF_UNCHECKED = 0x00000000;
MF_CHECKED = 0x00000008;
MF_STRING = 0x00000000;

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


// Config variables
// Variables
var my_ini_values = new Array;
var default_values = {"AAD_path" : "c:\\Program Files\\AlbumArtDownloaderXUI\\AlbumArt.exe"};

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


var mode;
var g_move = null;
var show_buttons;
var Active_array = [];
var WshShell = new ActiveXObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var Sup_Buttons = [{name:"Last.fm"}, {name:"Google"}, {name:"Discogs"}, {name:"Allmusic"}, {name:"Selection"}, {name:"Others"}];
var g_button_down = null;

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


// Script functions
mode = parseInt( utils.ReadINI( fb.FoobarPath + 's7e.ini', 'buttonbar-settings', 'buttonbar_mode', 1) );


// Metadb
OutputMetadb = function() {
    if ( mode == 2 ) return ( fb.GetFocusItem(true) ? fb.GetFocusItem(true) : false );
    else return ( fb.IsPlaying ? fb.GetNowPlaying() : ( fb.GetFocusItem(true) ? fb.GetFocusItem(true) : false ));
}


function my_ini_write(text) {
   var fso, f, r, write = text;
   var ForWriting = 2;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   var filename = fb.FoobarPath + "s7e.data";
   try {
      f = fso.OpenTextFile(filename, ForWriting, true)
      f.Write(write);
      f.Close();
   } catch(e) {
      fb.trace(e.message);
   }
}

function object2string(obj) {
    var val, output = "";
    if (obj) {   
        for (var i in obj) {
            val = obj[i];
            switch (typeof val) {
                case ("string"):
                    output += i + "=" + val + "\r";
                    break;
                default:
                    output += i + "=" + val + "\r";
            }
        }
        output = output.substring(0, output.length-1);
    }
    return output;
}

function my_ini_read() {
   var fso, f, r, b;
   var ForReading = 1, ForWriting = 2;
   var filename = fb.FoobarPath + "s7e.data";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   if ( fso.FileExists(filename) ) {
      f = fso.OpenTextFile(filename, ForReading);
      r =  f.ReadAll();
      var a = r.split("\n");
      for (key in a) {
         b = a[key].split("=");
         my_ini_values[b[0]] = b[1];
      }
      return my_ini_values;
   }
   else return false;

}




if ( !my_ini_read() ) my_ini_write(object2string(default_values));



buttons = {
//   reset: new Button( "..", "All", function() { show_buttons = null; update(); window.Repaint(); })
   lastfm_song: new Button( "Song", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')) + "/_/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%title%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') )); }),
   lastfm_album: new Button( "Album", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')) + "/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') )); }),
   lastfm_artist: new Button( "Artist", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) )).replace(/%20/g,'+') ); }),
   lastfm_group: new Button( "Group", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.last.fm/community/groups/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')); }),
   lastfm_images: new Button( "Images", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://last.fm/music/" + encodeURIComponent(encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+')) + "/+images" ); }),
   lastfm_events: new Button( "Events", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.last.fm/events/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') ); }),
   lastfm_search: new Button( "Search by Artist", Sup_Buttons[0].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.last.fm/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=all" ); }),
   google_artist: new Button( "Artist", Sup_Buttons[1].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.google.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&ie=utf-8"); }),
   google_album: new Button( "Album", Sup_Buttons[1].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.google.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist% %album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&ie=utf-8"); }),
   google_title: new Button( "Song", Sup_Buttons[1].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.google.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist% %title%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&ie=utf-8"); }),

    discogs_artist: new Button( "Artist", Sup_Buttons[2].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.discogs.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=artists&btn=Search"); }),
   discogs_album: new Button( "Album", Sup_Buttons[2].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.discogs.com/search?q=" + encodeURIComponent( fb.TitleFormat("%album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=releases&btn=Search"); }),
   discogs_all: new Button( "Artist - Album", Sup_Buttons[2].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.discogs.com/search?q=" + encodeURIComponent( fb.TitleFormat("%artist% %album%").EvalWithMetadb(OutputMetadb()) ).replace(/%20/g,'+') + "&type=all&btn=Search"); }),

   allmusic_artist: new Button( "Artist", Sup_Buttons[3].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.allmusic.com/search/artist/" + encodeURIComponent( fb.TitleFormat("$ascii(%artist%)").EvalWithMetadb(OutputMetadb()) )); }),
   allmusic_album: new Button( "Album", Sup_Buttons[3].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.allmusic.com/search/album/" + encodeURIComponent( fb.TitleFormat("$ascii(%album%)").EvalWithMetadb(OutputMetadb()) )); }),
   allmusic_title: new Button( "Song", Sup_Buttons[3].name, function() { if ( OutputMetadb() ) WshShell.run("http://www.allmusic.com/search/song/" + encodeURIComponent( fb.TitleFormat("$ascii(%title%)").EvalWithMetadb(OutputMetadb()) )); }),

    undo: new Button( "Undo", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Undo"); }),
   redo: new Button( "Redo", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Redo"); }),
   sort_by_3d: new Button( "Sort by...", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Sort/Sort by..."); }),
   sort_by_fields: new Button( "Sort by fields", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Sort/Sort by fields..."); }),
   select_all: new Button( "Select All", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Select All"); }),
   crop: new Button( "Crop", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Crop"); }),
   reverse_selection: new Button( "Reverse", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Sort/Reverse"); }),
   remove_selection: new Button( "Remove", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Remove"); }),
   random_selection: new Button( "Randomize", Sup_Buttons[4].name, function() { fb.RunMainMenuCommand("Edit/Selection/Sort/Randomize"); }),

    wiki_artist: new Button( "Wikipedia Artist", Sup_Buttons[5].name, function() { if ( OutputMetadb() ) WshShell.run("http://en.wikipedia.org/wiki/Special:Search?search=" + encodeURIComponent(fb.TitleFormat("$replace(%artist%, ,_)").EvalWithMetadb(OutputMetadb()))); }),
   mb_artist: new Button( "MusicBrainz Artist", Sup_Buttons[5].name, function() { if ( OutputMetadb() ) WshShell.run("http://musicbrainz.org/search?query=" + encodeURIComponent(fb.TitleFormat("%artist%").EvalWithMetadb(OutputMetadb())) + "&type=artist"); }),
   //aad_album: new Button( "Album Art", Sup_Buttons[5].name, function() { WshShell.run('"c:\\Program Files\\AlbumArtDownloaderXUI\\AlbumArt.exe" /ar "' + fb.TitleFormat("%album artist%").Eval(true) + '" /al "' + fb.TitleFormat("%album%").Eval(true) + '" /path "' + fb.TitleFormat("$replace(%path%,%filename_ext%,)folder.jpg").Eval(true) + '"'); }),
   reset: new Button( "..", "All", function() { show_buttons = null; buttons_num = null; update(); window.Repaint(); })

}



if ( fso.FileExists( my_ini_values["AAD_path"] ) ) {
   buttons.aad_album = new Button( "Album Art", Sup_Buttons[5].name, function() { if ( fb.GetFocusItem() ) WshShell.run('"' + my_ini_values["AAD_path"] + '" /ar "' + fb.TitleFormat("%album artist%").EvalWithMetadb(fb.GetFocusItem()) + '" /al "' + fb.TitleFormat("%album%").EvalWithMetadb(fb.GetFocusItem()) + '" /path "' + fb.TitleFormat("$replace(%path%,%filename_ext%,)folder.jpg").EvalWithMetadb(fb.GetFocusItem()) + '"'); });
}
else if ( fso.FileExists( default_values.AAD_path ) ) {
   buttons.aad_album = new Button( "Album Art", Sup_Buttons[5].name, function() { if ( fb.GetFocusItem() ) WshShell.run('"' + default_values.AAD_path + '" /ar "' + fb.TitleFormat("%album artist%").EvalWithMetadb(fb.GetFocusItem()) + '" /al "' + fb.TitleFormat("%album%").EvalWithMetadb(fb.GetFocusItem()) + '" /path "' + fb.TitleFormat("$replace(%path%,%filename_ext%,)folder.jpg").EvalWithMetadb(fb.GetFocusItem()) + '"'); });
}




var MyButtons = new Array(
   buttons.reset,
   buttons.lastfm_song,
   buttons.lastfm_album,
   buttons.lastfm_artist,
   buttons.lastfm_group,
   buttons.lastfm_events,
   buttons.lastfm_images,
   buttons.lastfm_search,
   buttons.google_artist,
   buttons.google_album,
   buttons.google_title,
   buttons.discogs_artist,
   buttons.discogs_album,
   buttons.discogs_all,
   buttons.allmusic_artist,
   buttons.allmusic_album,
   buttons.allmusic_title,
   buttons.undo,
   buttons.redo,
   buttons.sort_by_3d,
   buttons.sort_by_fields,
   buttons.select_all,
   buttons.random_selection,
   buttons.crop,
   buttons.reverse_selection,
   buttons.remove_selection,
   buttons.mb_artist,
   buttons.wiki_artist,
   buttons.aad_album
);



var buttons_num = MyButtons.length;


function Button(name, sup, func) {
   this.name = name;
   this.sup = sup;
   this.func = func;

   this.onClick = function () {
      this.func && this.func();
   }
}

function update() {

   if ( show_buttons ) {
      Active_array = [];

      for (var i in MyButtons ) {

         if ( show_buttons != MyButtons[i].sup && MyButtons[i].sup != "All" ) continue;
         else {
            Active_array.push(MyButtons[i]);
         }
      }
   }
   else Active_array = Sup_Buttons;

}

update();


function on_paint(gr){
   gr.SetTextRenderingHint(5);
   gr.SetSmoothingMode(2);
   var ww = window.Width;
   var wh = window.Height;
   var n;
   var t_color;

   try {
      arrow_image = gdi.Image( fb.FoobarPath + "\\s7e_files\\images\\arrow_down_black.png" );
   } catch(e) { fb.trace(e.message); }


   if ( g_move != undefined ) {
      gr.FillGradRect(1+g_move*ww/Active_array.length, 1, ww/Active_array.length - 2, (wh-1)/2, 90, RGB(248,251,254), RGB(237,242,250));
      gr.FillGradRect(1+g_move*ww/Active_array.length, wh/2, ww/Active_array.length - 2, (wh-3)/2, 90, RGB(215,228,244), RGB(193,210,232));
      gr.DrawRoundRect(1+g_move*ww/Active_array.length, 1, ww/Active_array.length - 3, wh - 3, 4, 4, 1, RGB(255,255,255));
      gr.DrawRoundRect(g_move*ww/Active_array.length, 0, ww/Active_array.length-1, wh-1, 4, 4, 1, RGB(170,190,210));
   }

   if ( g_button_down != undefined ) {
      gr.FillGradRect(1+g_button_down*ww/Active_array.length, 1, ww/Active_array.length - 2, (wh-1)/2, 90, RGB(225,235,245), RGB(216,228,241));
      gr.FillGradRect(1+g_button_down*ww/Active_array.length, 0, ww/Active_array.length - 2, 3, 90, RGB(201,212,228), RGB(221,232,241));
      gr.FillGradRect(1+g_button_down*ww/Active_array.length, (wh-1)/2, ww/Active_array.length - 2, (wh-3)/2, 90, RGB(207,219,236), RGB(207,220,237));
      gr.DrawRoundRect(g_button_down*ww/Active_array.length, 0, ww/Active_array.length-1, wh-1, 4, 4, 1, RGB(170,190,210));
   }


   for ( n=0; n<Active_array.length; n++ ) {

         if ( n == g_move ) t_color = RGB(0,0,0);
         else t_color = Active_array[n].name == '..' ? RGB(160,160,160) : RGB(30,50,90);

            gr.GdiDrawText( Active_array[n].name == '..' ? '(' + show_buttons + ')\n' + Active_array[n].name : Active_array[n].name, Active_array[n].name == '..' ? g_font2 : g_font, t_color, 2 + n * ww / Active_array.length, 0, ww / Active_array.length - 4, wh, 0x00000001 | 0x00000004 | 0x00040000 | 0x00000400);
            var string = gr.MeasureString(Active_array[n].name, g_font, 2 + n * ww / Active_array.length, 0, ww / Active_array.length - 4, wh, 0x00000001 | 0x00000004 | 0x00040000 | 0x00000400);
            if ( show_buttons == null && arrow_image ) gr.DrawImage( arrow_image, n * ww / Active_array.length + ( ww / Active_array.length / 2 ) + string.Width / 2 + 5, (wh - 10)/2, 14, 10, 0, 0, 16, 16, 0, 255);

   }


}


function on_mouse_lbtn_down(x, y, mask) {
    g_move = null;
   g_button_down = Math.floor( x / (window.Width/Active_array.length) );
   window.Repaint();
}


function on_mouse_lbtn_up(x,y){
   g_button_down = null;
   window.Repaint();

   var i = Math.floor( x / (window.Width/Active_array.length) );

    if ( i < Active_array.length ) {

        try {

            if ( show_buttons ) Active_array[i].onClick();
            else {
                show_buttons = Sup_Buttons[i].name;
                update();
            }

        }
        catch(e) { }

    }

}


function on_mouse_move(x,y){

   window.SetCursor(32649);
   //if ( !g_button_down && g_move != Math.floor( x / (window.Width/Active_array.length) ) ) {
   if ( !g_button_down && g_move != Math.floor( x / (window.Width/Active_array.length) ) ) {

        if ( x < window.Width ) {

            g_move = Math.floor( x / ( window.Width/Active_array.length ) );

            //fb.trace( 'x=' + x + '| g_move=' + g_move + ' | Active_array.length=' + Active_array.length + ' | window.Width=' + window.Width + ' | Active_array[g_move].name=' + Active_array[g_move].name);

            try {

                if ( g_move < Active_array.length ) {
                    tooltip.Text = Active_array[g_move].name;
                    tooltip.Activate();
                    window.Repaint();
                }

            }
            catch(e) { }

        }

   }

}


function on_mouse_wheel(delta) {
   if ( delta > 0 && show_buttons ) {
      show_buttons = null;
      update();
      window.Repaint();
   }
}


function on_mouse_leave() {
   g_move = null;
   window.SetCursor( 32512 );
    tooltip.Deactivate();
   window.Repaint();
}


function on_mouse_rbtn_up(x, y) {
   var _menu = window.CreatePopupMenu();
   var i = 1;
   var ret;
   
   _menu.AppendMenuItem(MF_STRING, i++, "Playing item");
   _menu.AppendMenuItem(MF_STRING, i, "Current selection");
   _menu.EnableMenuItem( mode, 1 );
   _menu.CheckMenuRadioItem( 1, i, mode );


   ret = _menu.TrackPopupMenu(x, y);
   if (ret >= 1 && ret <= i) {
      utils.WriteINI( fb.FoobarPath + 's7e.ini', 'buttonbar-settings', 'buttonbar_mode', ret);
      mode = ret;
      window.Repaint();
   }

   return true;
}

вот что получилось:( кнопки исчезли
Изображение
rusline
Репутация: 1
С нами: 11 лет 5 месяцев

Сообщение #50 vladj » 09.10.2012, 21:51

У Максима скрипт сложный, с выпадающими меню и прочим, этого и стоило ожидать, т.к. в скриптах он,
как говорится собаку съел и простому пользователю в его скриптах разобратся очень сложно.
Но, ты имеешь панель WSH со скриптом (для кнопок), дефолтным для сборки s7e.
Никто не мешает в окне скрипта удалить весь текст и скопировать туда текст скрипта для кнопок, но попроще, в котором
ты сможешь что-то сам сделать. Вот скрипт для кнопок(5 шт) и можно взять из сборки DarkOne и тренироватся на нём.
При этом нужно изменить пути,( ведь скрипт ты поставишь в s7e) в этой строке:
var imgPath = fb.foobarPath + "themes\\DarkOne\\Buttons\\Control\\";
Т.е. укажешь папку , в которой лежат кнопки в сборке s7e и поместишь туда пару кнопок, которые в скрипте прописаны,
AddOnAlone.png и AddOnAloneMH.png. Кнопки можно сделать самому, т.к. там тёмные, лишь-бы названия соответствовали и размеры.
Да, в начале скрипта может понадобится уточнить ширину панели с кнопками, это в строчке window.MinWidth = window.MaxWidth = 268;
Что-то я могу тут писать и не совсем правильно, но вроде опытные пользователи пока не матерят меня, значит направление общее верное.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Сообщение #51 rusline » 10.10.2012, 10:26

vladj, Спасибо) я конечно не программист, но попробую сделать как ты сказал) мейби что нить у меня и получится :)
rusline
Репутация: 1
С нами: 11 лет 5 месяцев

Сообщение #52 onv » 10.10.2012, 11:32

buttons.coy_to,
Банальная описка. Внимательнее надо проверять, что пишешь, незамыленным глазом, только и всего.
onv M
Откуда: Харьков
Репутация: 52
С нами: 11 лет 10 месяцев

Сообщение #53 rusline » 10.10.2012, 12:33

onv, исправил, но не вышло) как говорит сам автор данной сборки, то там немного иная технология) надеюсь он поможет)
rusline
Репутация: 1
С нами: 11 лет 5 месяцев

Сообщение #54 ponomart » 27.10.2012, 21:36

Сборка очень понравилась. Чувствую перейду на нее.

Замечания: сразу бросается в глаза перегруженность информацией и, как уже было отмечено, кнопками. Пока додумаешь как и где это все отключать, и переходить на сборку не захочется. Если рассчитано для максимальной настройки по своему вкусу, тогда давай подробный ридми. Иначе это отпугнет потенциальных пользователей да и тема разрастется.

Как владельцу ноутбука (сплюснутый экран) мне не удобно что столько сворачиваемых панелей (слева) находятся одна над другой. Даже когда сабж на весь экран им там тесно. Приходится одну скрывать, другую раскрывать. Тогда уж лучше по классике - одна панель и переключаться по кнопке между, скажем, лирикой и био. О media library и не говорю - ее вообще лучше во всю длину плеера поставить. Но это все субъективно, может на большом экране и ок.
В целом весьма благодарен автору.

Офтоп: может кто знает, есть ли возможность, что бы media library сама по себе являлась плейлистом? Может в какой сборке.
ponomart
Репутация: 0
С нами: 13 лет 9 месяцев

Сообщение #55 mgz » 28.10.2012, 17:37

ponomart:Офтоп: может кто знает, есть ли возможность, что бы media library сама по себе являлась плейлистом? Может в какой сборке.
Так вроде бы можно сделать Автоплейлист из библиотеки.
mgz M
Аватара
Откуда: Украина, Киев
Репутация: 73
С нами: 17 лет 10 месяцев

Сообщение #56 vladj » 28.10.2012, 18:38

В Media Library выставить сортировку по папкам (Folders) и если вся музыка у нас лежит в одной папке (например Muzic),
щёлкнув по верхней строке мы можем отправить в плейлист всю музыку. Но смысл ? Сотни гигабайт в плейлист отправлять скопом.
Проще посвятить несколько минут приведению в относительный порядок папок с музыкой и всё будет распрекрасно.
Ну там по наша-не наша, жатая-не жатая, по жанрам, многоканал и т.д.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Сообщение #57 ponomart » 30.10.2012, 02:26

vladj, музыка конечно в порядке, и в ней легко все находится. Попытаюсь объяснить откуда вопрос. Посмотрите на второй скриншот в шапке: плейлист уже выглядит как развернутый эксплорер. Если бы плейлист был в виде дерева со всей музыкой, то ты просто находишь трек и его запускаешь обходясь без библиотеки. В таком случае Media Library только усложняет процесс воспроизведения нужного альбома - сначала нужно его выбрать в дереве библиотеки, потом добавить в плейлист и затем воспроизвести нужный трек.
Может я конечно, непонятно объясняю, но суть сводится к тому чтобы плейлист выполнял функции Media Library.
Опять же, это все ИМХО и если что не так, просто продолжаем обсуждение сборки :)
ponomart
Репутация: 0
С нами: 13 лет 9 месяцев

Сообщение #58 vladj » 30.10.2012, 04:08

Согласен что, наверное, мы по разному слушаем. Я вообще не пользуюсь плейлистами. В автоплейлист бросаю альбом с артистом из медиабиблиотеки,
ну или все альбомы с ним (5-10-20-не важно). Медиабиблиотека как раз и выглядит в виде дерева, очень быстро можно всё найти, вплоть до одного трека.
Не вижу разницы запуска с дерева библиотеки и "Если бы плейлист был в виде дерева со всей музыкой" - ты просто находишь трек и его запускаешь.
>сначала нужно его выбрать в дереве библиотеки, потом добавить в плейлист и затем воспроизвести нужный трек
>
Не не так, проще всё, выбрать, щёлкнуть, ап, и он воспроизводится (трек, альбом, папка с альбомами).
Сборкой этой я просто не смог- бы пользоватся, потому, как слева три панели по вертикали мне не нужны, как и инфо внизу.
Писать о ней не буду, не этично сидеть в теме и критиковать сборку, тем более от этого автора. Я ему и в подмётки не гожусь :smile:
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Сообщение #59 onv » 30.10.2012, 13:07

ponomart:vladj, музыка конечно в порядке, и в ней легко все находится. Попытаюсь объяснить откуда вопрос. Посмотрите на второй скриншот в шапке: плейлист уже выглядит как развернутый эксплорер. Если бы плейлист был в виде дерева со всей музыкой, то ты просто находишь трек и его запускаешь обходясь без библиотеки.
Если музыка в порядке и хочется дерева, но не медиабиблиотеки, для этого существует Tree Explorer. Которому можно при необходимости прописать в качестве root-а свой каталог с музыкой и запускать из него воспроизведение хоть потреково, хоть папками. Он и будет два в одном - и деревом, и плейлистом.
onv M
Откуда: Харьков
Репутация: 52
С нами: 11 лет 10 месяцев

Сообщение #60 vladj » 30.10.2012, 14:58

onv:и запускать из него воспроизведение хоть потреково
У меня он что, неправильно настроен ? Потреково я из него запустить не могу, видны только альбомы
или я наковырял что-то ? В тутошней сборке присутствует уже альбом лист (медиабиблиотека), вот там дерево всей музыки
совершенно идентичное обычному, виндовому проводнику. Кстати Library Tree у меня тоже не видит треков отдельных.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 2 месяца

Пред.След.

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