Автор: NONONINI
Дата сообщения: 01.04.2012 23:16
Подскажите, как пользоваться WSH Panel Mod?
Импортирую скрипт, а он у меня исполняется в самой панели WSH
[more=Скрипт]//Seekbar
function StringFormat() {
var h_align = 0, v_align = 0, trimming = 0, flags = 0;
switch (arguments.length)
{
// fall-thru
case 4:
flags = arguments[3];
case 3:
trimming = arguments[2];
case 2:
v_align = arguments[1];
case 1:
h_align = arguments[0];
break;
default:
return 0;
}
return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
}
StringAlignment = {
Near: 0,
Center: 1,
Far: 2
};
StringTrimming = {
None: 0,
Character: 1,
Word: 2,
EllipsisCharacter: 3,
EllipsisWord: 4,
EllipsisPath: 5
};
StringFormatFlags = {
DirectionRightToLeft: 0x00000001,
DirectionVertical: 0x00000002,
NoFitBlackBox: 0x00000004,
DisplayFormatControl: 0x00000020,
NoFontFallback: 0x00000400,
MeasureTrailingSpaces: 0x00000800,
NoWrap: 0x00001000,
LineLimit: 0x00002000,
NoClip: 0x00004000
};
function RGB(r, g, b) {
return (0xff000000 | (r << 16) | (g << 8) | (b));
}
function TimeFmt(t){
var zpad = function(n){
var str = n.toString();
return (str.length<2) ? "0"+str : str;
}
var h = Math.floor(t/3600); t-=h*3600;
var m = Math.floor(t/60); t-=m*60;
var s = Math.floor(t);
if(h>0) return h.toString()+":"+zpad(m)+":"+zpad(s);
return m.toString()+":"+zpad(s);
}
// APPLICATION - START
g_font = gdi.Font("Segoe UI", 12, 0);
g_tfo = fb.TitleFormat("[%album artist% - ][$if2(%track artist%,%performer%) - ]%title% '['$if(%ispaused%,Paused,%playback_time% / %length%)']'");
g_stringformat = StringFormat(StringAlignment.Center, StringAlignment.Center);
var g_drag = 0;
// Key point
function on_playback_stop(){
window.Repaint();
}
function on_playback_seek(time){
window.Repaint();
}
function on_playback_time(time){
window.Repaint();
}
function on_playback_pause(state){
window.Repaint();
}
function on_paint(gr) {
gr.SetTextRenderingHint(5);
var ww = window.Width;
var wh = window.Height;
var pos = 0
var length = fb.PlaybackLength;
var txt;
if(length > 0){
if(g_drag){
pos = window.Width * g_drag_seek;
txt = "Seek " + TimeFmt(g_drag_seek * length) + " / " + TimeFmt(length);
}
else{
pos = window.Width * (fb.PlaybackTime / length);
//проигрываемая композиция
txt = g_tfo.Eval();
//следящий за фокусом курсора
//txt = g_tfo.EvalWithMetadb(g_focus_metadb);
//время, прогресс
//txt += " " + TimeFmt(fb.PlaybackTime) + " / " + TimeFmt(length - fb.PlaybackTime) + " [" +TimeFmt(length) + "]";
//txt += " " + Math.floor(fb.PlaybackTime / length * 100).toString() + "%";
}
} else if (fb.PlaybackTime) {
txt = "Streaming...";
}
//if(fb.IsPaused) { txt += " [Paused]" }
gr.FillGradRect(0, 0, pos, wh, 90, RGB(0,0,0), RGB(0,0,0));
gr.FillGradRect(pos, 0, ww-pos, wh, 90, RGB(100,100,100), RGB(0,0,0));
// Draw info
gr.DrawString(txt, g_font, RGB(255,255,255), 0, 0, window.Width, window.Height, g_stringformat);
gr.DrawRect(0,0, ww-1, wh-1, 1.0, RGB(150,150,150));
}
function on_mouse_lbtn_down(x,y){
g_drag = 1;
on_mouse_move(x,y);
}
function on_mouse_lbtn_up(x,y){
if(g_drag){
g_drag = 0;
g_drag_seek = x / window.Width;
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
g_drag = 0;
}
}
function on_mouse_move(x,y){
if(g_drag){
g_drag_seek = x / window.Width;
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
window.Repaint();
}
}
function on_mouse_wheel(delta){
fb.PlaybackTime += delta;
}
// APPLICATION - END[/more]