WSH: Rating Buttons

Begonnen von Blitzschlag, 01. Juli 2011, 00:11:04

Vorheriges Thema - Nächstes Thema

Blitzschlag

Hallo,

ich hab mich jetzt ne (kleine) weile mit dem WSH beschäftigt und versucht "Rating" buttons zu implementieren. Allerdings mit keinem Erfolg (jscript ist nicht grad meine Stärke).

Momentan habe ich das ganze über das TrackInfo Panel gelöst. (Den code hab ich vom IBIZA-Skin und für meine Bedürfnisse leicht angepasst).

/ Background
$drawrect(0,0,%_width%,8,brushcolor-30-50-57 pencolor-null)

// PerTrack

// ----------------------------
// .deb --- Rating System
// ----------------------------

// --------------------------------------------
// drawing RATING info
// --------------------------------------------

$puts(rating,$if2($meta(rating),0))
$puts(no.set,1)
$ifgreater($meta(rating),0,

  $puts(rate.x,0)
  $puts(rate.y,-1)

  $imageabs2(0,0,0,0,0,0,$get(rate.x),$get(rate.y),'./images/ibiza/rating/set'$get(no.set)'/r0.png',alpha-128)

$ifequal($get(rating),1,
$button($get(rate.x),$get(rate.y),0,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r1x.png',TAG:SET:rating:0,TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),0,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r1.png',TAG:SET:rating:1,TOOLTIP:"Average")
)
$ifequal($get(rating),2,
$button($get(rate.x),$get(rate.y),18,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r2x.png',TAG:SET:rating:0,TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),18,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r2.png',TAG:SET:rating:2,TOOLTIP:"Good")
)
$ifequal($get(rating),3,
$button($get(rate.x),$get(rate.y),36,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r3x.png',TAG:SET:rating:0,TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),36,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r3.png',TAG:SET:rating:3,TOOLTIP:"Very Good")
)
$ifequal($get(rating),4,
$button($get(rate.x),$get(rate.y),54,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r4x.png',TAG:SET:rating:0,TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),54,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r4.png',TAG:SET:rating:4,TOOLTIP:"Excellent")
)
$ifequal($get(rating),5,
$button($get(rate.x),$get(rate.y),72,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r5x.png',TAG:SET:rating:0,TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),72,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set'$get(no.set)'/r5.png',TAG:SET:rating:5,TOOLTIP:"MegaHit")

  )

,


  $puts(rate.x,0)
  $puts(rate.y,-1)

           
$button($get(rate.x),$get(rate.y),0,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set1/r1.png',TAG:SET:rating:1,TOOLTIP:"Average")

$button($get(rate.x),$get(rate.y),18,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set1/r2.png',TAG:SET:rating:2,TOOLTIP:"Good")

$button($get(rate.x),$get(rate.y),36,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set1/r3.png',TAG:SET:rating:3,TOOLTIP:"Very Good")

$button($get(rate.x),$get(rate.y),54,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set1/r4.png',TAG:SET:rating:4,TOOLTIP:"Excellent")

$button($get(rate.x),$get(rate.y),72,0,18,16,'./images/ibiza/rating/set'$get(no.set)'/r'$get(rating)'.png','./images/ibiza/rating/set1/r5.png',TAG:SET:rating:5,TOOLTIP:"MegaHit")

)
// ----------------------------
// .fin --- Rating System
// ----------------------------

// MOOD TAG SET/UNSET to feed automatically auto-playlist for my iPod or iPhone
$if($stricmp('FOO_LASTFM',$left(%path%,10)),
$imageabs2(20,16,0,0,0,0,92,0,'./images/ibiza/bt/mood-off.png',nokeepaspect)
,
$ifgreater(%MOOD%,0,
$button(92,0,0,0,20,16,'./images/ibiza/bt/mood-on.png','./images/ibiza/bt/mood-ov.png',TAG:SET:MOOD:0,TOOLTIP:"Unset")
,
$button(92,0,0,0,25,16,'./images/ibiza/bt/mood-off.png','./images/ibiza/bt/mood-ov.png',TAG:SET:MOOD:1,TOOLTIP:"Set")
)
)

//------------------------------
//.test ---- unset Rating
//------------------------------
$button(120,0,0,0,18,16,'./images/rx_n.png','./images/rx_ov.png',TAG:SET:rating:0,TOOLTIP:"Delete Rating")


Da ichs aber ehrlich gesagt unpraktisch find ein extra component nur wegen den Buttons zu haben, wäre es schön, das auch über WSH zum laufen zu kriegen.
Die Funktion, dass das rating gelöscht wird wenn man über dem Button ist, der das aktuelle Rating zeigt, brauch ich eigentlich nicht. Dafür hab ich mir ja schon den extra Button in dem //.test....-Abschnitt gebastelt.

Wichtig wäre für mich:
a) Das ich das Rating auch änder nkann wenn der song gerade nicht abespielt wird
b) Das Rating in die Tags geschrieben wird


Die Samples zum WSH helfen mir da leider nicht wirklich weiter, das skript für die POButtons bekommen ich zwar zum laufen, kann aber nicht wirklich was mit dem code anfangen :(

Daher wäre ich für jede Hilfe dankbar. Sei es in Form eines Links zu einer Erklärung, wie man das ganze angeht, eines Thread den ich vll. bei der Suche übersehen hab (Sorry falls dem so ist  :-[) oder auch fertigen code bzw. code-SChnipseln an denen ich mich dann weiter versuchen darf ^^

cheers

qwert73

Wenn es dir jetzt nicht um Optik gehen sollte, dann kannst Du doch die stinknormalen Buttons nehmen, die sich in Dui und Cui in der Toolbar platzieren lassen. In Dui werden die Buttons nicht auf den gerade laufendeb Track, sondern auf die Auswahl angewendet, wenn in den foobar2000 Einstellungen unter Display das auch so ausgewählt wurde. In der Cui kannst Du diese Einstellung in den Buttons-Fenster selber vornehmen. Um nun die Buttons mit Befehlen zu assoziieren, die dir das Rating in die Dateien schreibt, brauchst Du foo_quicktag.

Eine sehr gute und von mir bevorzugte Alternative für die Dui  ist foo_tagbox: es bietet dir nicht nur für Rating eine Auswahlliste mit den verschiedenen Ratings.

Blitzschlag

#2
Das mit dem Tag_box ist zwar an sich recht interessant, aber erfüllt (leider) nicht ganz mein Ziel, werd dennoch mal mit spielen bei Gelegenheit, danke für den Tip ;)

Tja bei der Optik liegt aber grad der Hund begraben, ich hatte die buttons erst in der normalen Leiste. Allerdings hat mir das nicht sonderlich gefallen, daher wollt ich sie in einem extra Panel, daher auch WSH (bzw, z.Z. Track info panel (mod)). So kann ichs mir im CUI platzieren wies mir gefällt.

EDIT: Wer Rechtschreibfehler findet darf sie getrost behalten :P