WSH Panel (uie) und WSH Panel MOD

Begonnen von Foo Foo, 29. Oktober 2009, 18:23:54

Vorheriges Thema - Nächstes Thema

Foo Foo

Ich nutze WSH Panel (uie) und WSH Panel MOD beide nutzen die selben Skriptsprachen aber
ich habe festgestellt das die Skripte nicht in beiden laufen.
Ich würde gerne den WSH Panel (uie) rausschmeißen und meine Skripte irgend wie umformatieren das sie auch
im WSH Panel MOD laufen.
Wie kann ich das hinbekommen?
Hat das jemand nen Plan...

:-\

tedgo

Normalerweise sollten die Scripte im WSH Panel mod laufen.
Es gibt nur einige feine Unterschiede.

So solltest du vor allem nach gdi.Font Variablen suchen, die sind im WSH Panel mod anders als im WSH Panel.

Am Besten wäre, wenn du die Scripte aus dem WSH Panel einfach mal in ein WSH Panel mod lädst und dann in der foobar2000 Konsole nachschaust, welche Zeile den Fehler verursacht. So kommst du am ehesten auf die Spur der Script-Teile, die im WSH Panel mod nicht laufen und die du ändern musst.

Ohne deine Scripte zu kennen, kann ich dir jetzt natürlich nicht merh dazu sagen... ;)

Foo Foo

#2
Hier das ist für meine Seekbar:
-----------------------------------------------------------------------------------------------------

var weight_normal =400;
var weight_bold   =800;
var italic_no =0;
var italic    =1;
var uline_no  =0;
var uline     =1;
//--------
var align_top   =0;
var align_middle=1;
var align_bottom=2;

var align_left  =0;
var align_center=1;
var align_right =2;

var trim_no     =0;
var trim_chara  =1;
var trim_word   =2;
var trim_elips_chara =3;
var trim_elips_word  =4;
var trim_elips_path  =5;

var flag_rtl        =0x0001;
var flag_vert       =0x0002;
var flag_nofit      =0x0004;
var flag_dispctrl   =0x0020;
var flag_nofallback =0x0400;
var flag_trailspace =0x0800;
var flag_nowrap     =0x1000;
var flag_linelimit  =0x2000;
var flag_noclip     =0x4000;

var g_btn_img1 = gdi.Image(fb.ComponentPath.replace("components","images") + "ibiza/head.png");

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

var g_font = gdi.Font(-12, weight_normal, italic, uline_no, "");
var g_titlefmt = fb.TitleFormat("");
var g_fileinfo = null;

var g_drag = 0;
var g_drag_seek = 0;

function on_paint(gr){
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_titlefmt.Eval();
}
}

gr.FillGradRect( 0, 0, ww, wh, 90, RGB(0,0,0),  RGB(48,48,48));
gr.FillGradRect( 0, 1,    pos-0, wh - 0, 90, RGB(72,98,136), RGB(0,0,0));

//gr.DrawImage(g_btn_img1,pos-6,0,6,6,0,0,6,6);

}

function on_size(){
}

function on_focus(gr){
//fb.trace("focus " + focused);
}

function on_key_down(key){
//fb.trace("key " + key);
}
function on_mouse_lbtn_down(x,y){
g_drag = 1;
}
function on_mouse_lbtn_up(x,y){
if(g_drag){
g_drag = 0;
g_drag_seek = x / window.Width;
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
}
}
function on_mouse_move(x,y){
if(g_drag){
g_drag_seek = x / window.Width;
g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
window.Repaint();
}
}
function on_mouse_wheel(delta){
//fb.trace("wheel " + delta);
}
//--------
function on_playback_starting(cmd, paused){
}
function on_playback_new_track(info){
window.Repaint();
}
function on_playback_stop(){
window.Repaint();
}
function on_playback_seek(time){
window.Repaint();
}
function on_playback_pause(state){
}
function on_playback_edited(){
}
function on_playback_dynamic_info(){
}
function on_playback_dynamic_info_track(){
}
function on_playback_time(time){
window.Repaint();
}
function on_volume_change(val){
}

//EOF


------------------------------------------------------------------------------------
... und Volumeknopf
------------------------------------------------------------------------------------

// Knob button by Br3tt
// Modified by T.P Wang

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

var g_drag = false;
// foobar path, SHOULD be replaced
var g_btn_img1 = gdi.Image(fb.ComponentPath.replace("components","images") + "Volume/volbutton31e.png");
var g_btn_img5 = gdi.Image(fb.ComponentPath.replace("components","images") + "Volume/voldot.png");
var g_playing = fb.TitleFormat("%isplaying%");
var g_angle = 270;
var g_R = 12;

function calc_theta(x,y){
x = x - 15.5;
y = y - 15.5;
theta = Math.atan2(y,x) / Math.PI * 180;
if (theta <= 90 && theta > 45)
return g_angle;
if (theta > 90 && theta < 135)
return 0;
if (theta >= 0) {
if (theta > 90)
return theta - 135;
else
return theta + 225;
} else {
return theta + 225;
}
}

function on_paint(gr){
ww = window.Width;
wh = window.Height;
theta = (Math.pow(10, fb.Volume / 50) - 0.001) / 0.999 * g_angle;
// Volume 'Round Button' by Br3tt (13-08-2008)

var is_playing = txt = g_playing.Eval();
var volume = fb.Volume;
var couleurR = (100 * ((255+volume*2)/600));
var couleurG = (100 * ((255+volume*2)/600));
var couleurB = (100 * ((255+volume*2)/300));
var couleur = (100 * ((255+volume*2)/200));

posA = (theta - 45) * Math.PI / 180;
cosinusA = Math.cos(posA);
sinusA = Math.sin(posA);
posX = 18 - (cosinusA * 11) - 4 ;
posY = 18 - (sinusA * 11) - 4 ;

posX2 = 18 - (cosinusA * 10) - 4 ;
posY2 = 18 - (sinusA * 10) - 4 ;

posX3 = 18 - (cosinusA * 9) - 4 ;
posY3 = 18 - (sinusA * 9) - 4 ;

posX4 = 18 - (cosinusA * 8) - 4 ;
posY4 = 18 - (sinusA * 8) - 4 ;

gr.FillGradRect( 0, 0, ww, wh, 90, RGB(000,000,000), RGB(000,000,000));
//gr.FillGradRect( 0, 0, ww, wh, 90, RGB(couleurR,couleurG,couleurB), RGB(couleurR,couleurG,couleurB));
if(is_playing)
gr.FillGradRect( 0, 0, ww, wh, 90, RGB(couleur-10,0,0), RGB(couleur-10,0,0));

//if(couleur>254)
//gr.FillGradRect( 0, 0, ww, wh, 90, RGB(couleur-100,000,000), RGB(couleur-200,000,000));

gr.DrawImage(g_btn_img1,0,0,31,31,0,0,31,31);

gr.DrawImage(g_btn_img5,posX4,posY4,5,5,0,0,5,5);

}

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

function on_mouse_lbtn_up(x,y){
on_mouse_move(x,y);
g_drag = false;
}

function on_mouse_move(x,y){
if (g_drag){
// Calc Volume
d = calc_theta(x,y) / g_angle;
v = ( 40 * Math.log(0.999 * d + 0.001) / Math.LN10 ) ;
if (fb.Volume != v)
fb.Volume = v;
}
}

function on_mouse_wheel(delta){
if(delta>0)
fb.VolumeUp();
else
fb.VolumeDown();
}

function on_volume_change(val){
window.Repaint();
}

//EOF


Scripts in Codeboxes gesetzt - tedgo

Foo Foo

#3
Das sind beides JScripte.
Ich kenne mich besser mit dem Trackinfomod aus.
WSH Panel MOD Skripte sind etwas komplizierter.

Die beiden Skripte [ WSH Panel (uie) ] laufen super.
Eine andere Möglichkeit währe vielleicht mein einziges WSH Panel MOD Skript in WSH Panel (uie) umzucoden.
Habe beim skallieren meines foobar Fensters Pixelfehler.

kuckst Du...

hier



... ja ja foobar ist schon ein frickel Player

freue mich wenn meine Config fertig ist.  8)


Foo Foo

#4
Hier ist mein WSH Panel MOD Playback Order Skript


var MF_SEPARATOR = 0x00000800;
var MF_ENABLED = 0x00000000;
var MF_GRAYED = 0x00000001;
var MF_DISABLED = 0x00000002;
var MF_UNCHECKED = 0x00000000;
var MF_CHECKED = 0x00000008;
var MF_STRING = 0x00000000;
var MF_POPUP = 0x00000010;
var MF_RIGHTJUSTIFY = 0x00004000;
//==========
function on_mouse_lbtn_down(x, y) {
var _menu = window.CreatePopupMenu();
var i = 1;
var ret;

_menu.AppendMenuItem(MF_STRING, i++, "Default");
_menu.AppendMenuItem(MF_STRING, i++, "Repeat (Playlist)");
_menu.AppendMenuItem(MF_STRING, i++, "Repeat (Track)");
_menu.AppendMenuItem(MF_STRING, i++, "Random");
_menu.AppendMenuItem(MF_STRING, i++, "Shuffle (tracks)");
_menu.AppendMenuItem(MF_STRING, i++, "Shuffle (albums)");
_menu.AppendMenuItem(MF_STRING, i, "Shuffle (folders)");
_menu.CheckMenuRadioItem(1, i, fb.PlayBackOrder + 1);

ret = _menu.TrackPopupMenu(x, y);
if (ret >= 1 && ret <= i)
{
fb.PlayBackOrder = ret - 1;
}
}


function StringFormat(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 on_paint(gr){
var PBO = fb.PlayBackOrder;
var FP = fb.ComponentPath.replace("components","images");
var icon = gdi.Image(FP+ "PlayMode/pbo_" + PBO + ".png");
var ww = window.Width;
var wh = window.Height;


gr.DrawImage(icon,0,0,25,25,0,0,25,25);

}

function on_playback_order_changed(new_order_index) {

window.Repaint();
}


Script in Codebox gesetzt - tedgo

tedgo

#5
Ändere bitte für den Import ins WSH Panel mod in deinem Seekbar Script:
var g_font = gdi.Font(-12, weight_normal, italic, uline_no, "");
in:
var g_font = gdi.Font("Segoe UI",12,2);

(Den Font-Style kannst du natürlich beliebig ändern, z. B. auf Tahoma oder Arial)

und:
var g_btn_img1 = gdi.Image(fb.ComponentPath.replace("components","images") + "ibiza/head.png");
in:
var g_btn_img1 = gdi.Image(fb.FoobarPath + "images\\ibiza\\head.png");
----------------------------------
In deinem Volumeknopf-Script kann ich jetzt nichts sehen, was im WSH Panel mod einen Fehler verursachen würde, außer:
var g_btn_img1 = gdi.Image(fb.ComponentPath.replace("components","images") + "Volume/volbutton31e.png");
var g_btn_img5 = gdi.Image(fb.ComponentPath.replace("components","images") + "Volume/voldot.png");


Ändere das bitte mal auf:
var g_btn_img1 = gdi.Image(fb.FoobarPath + "images\\Volume\\volbutton31e.png");
var g_btn_img5 = gdi.Image(fb.FoobarPath + "images\\Volume\\voldot.png");


(obwohl auch der alte Scriptteil funktionieren sollte, vorausgesetzt, die Pfadangaben sind korrekt)

Natürlich musst du die Pfade an deine tatsächlichen Pfade/Dateinamen anpassen, sonst bekommst du einen Script Error.
Ansonsten sollten die beiden Scripte eigentlich passen.
(Habs jetzt nicht ausprobiert, sondern deine Scripts nur überflogen...)

Falls es nicht klappen sollte, siehst du in der foobar2000-Konsole, welche Zeile des Scripts einen Fehler verursacht.
Melde dich dann noch mal :)

Auf deinem Screenshotr-Schnipsel kann ich übrigens keine Pixelfehler sehen...
Um so etwas beim resizen zu vermeiden, solltest du vielleicht deine Variablen für wíndow.Width und window.Height in function on_size() erstellen ;)

Foo Foo

#6
Juuuuup...

Hat geklappt.
Nur Die Sache mit Window on size.
Das steht bei mir drinne:

function on_paint(gr){
ww = window.Width;
wh = window.Height;

Wie muß der Code jetzt umgeschrieben werden?

Für mein WSH Panel MOD Playback Order Skript
würde ich gerne mei mouseover eine andere png anzeigen lassen.
Wie?

Danke Dir!

:top:

mexx

@Foo Foo

Ich würde gern mal deinen Volumeknopf sehen.

Kannst du mal ein kleines Bildchen posten?

cu
mexx

tedgo

#8
@Foo Foo
Einfach die Variablen aus on_paint in on_size schreiben.
Also an den Scriptanfang:
var ww, wh;

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

Für Mouseover-Images hast du das falsche Script.
Dazu wäre eines mit einem Button-Objekt besser geeignet.
Bei den Samples zum WSH Panel mod müsste ein passendes Script dabei sein. Schau dir das mal an und probier einfach ein bisschen rum.

Foo Foo

#9
@mexx

Mein Vol Button ist orginal von hier...
http://br3tt.deviantart.com/art/Kameleon-v1-2-2-Released-112901532
Ist ein bischen modifiziert.

hier mein Player...



Foo Foo

@tedgo

Funktioniert nicht in meinem Playbackorder Skript.
Bekomme das nicht alleine hin.
Kannst Du mir das Skript oben umcoden.
Vielen Dank.

Wenn mein Player fertig ist kann ich Ihn ja hier reinsetzen.

:cool:

tedgo

Was meinst du mit "funktioniert nicht"?
function on_size() oder Mouseover?
Mouseover KANN mit deinem Script nicht funktionieren, weil da kein Mousehover drin vorgesehen ist.
Deshalb ja mein Rat es mit einem Script aus dem Samples-Ordner zu probieren, welchen du von der WSH Panel Download-Seite herunterladen kannst (da müsste ein PBO-Script drin sein, das ein wenig angepasst wedren muss).

Foo Foo

Die on size Funktion meine ich.
Die funtzt nicht (Problem beim skalieren)

tedgo

Was für ein Problem?
Wenn ich mir das PBO-Script mal so ansehe, fällt mir aber auf, dass es gar nicht nötig ist, ww und wh irgendwo zu definieren, denn du rufst es nirgends auf...

Kannst es also getrost weglassen.

Wo es Sinn machen würde wäre evtl. im Volumeregler-Script.

PS (wegen deinem Mousehover-Problem):
grimes hat hier ein Script hochgeladen, welches - wenn ich mich jetzt nicht irre - u. a. einen Mousehover-Button für die Playback Order hat.
Nutze doch das Script und passe es an deine Bedürfnisse an :)

Foo Foo