WSH Panel mod - Scriptbeispiele (Seekbar, Rating, Album-Rating, Coverart & mehr)

Begonnen von TomPro, 16. Juni 2009, 19:24:54

Vorheriges Thema - Nächstes Thema

tedgo

Zitat von: Cabalist in 25. Januar 2010, 23:06:23
Kleines Featurerequest, habs mir zwar von Hand reineditiert nun, aber bei zukünftigen Updates wärs einfach per Config: Settings für Padding, ich mag zb den Text nich so an den Rand geklatscht oben.
Oh, an Padding habe ich nicht gedacht, weil ich in meiner Config randlose Panel (im PSS) habe. Da merkt man das nicht.
Macht ja nix, kann man ja nachtragen :)

EDIT:
Da hab ich ja noch was zu arbeiten: Padding-Werte über Kontextmenü setzen :)

tedgo

Release Candidate 2 des Lyrics Panels
Als Alternative zum Lyrics Show Panel für DUI und CUI
(unterstützt aber keine Timestamps und nur eingeschränkte Downloadmöglichkeiten...)
2010-01-28

Also, habs nochmal überarbeitet.
Sollte jetzt soweit fertig sein.

http://pastebin.de/3559

Hinzugefügt:
RC 2
- Autoscroll nun unabhängig von der Textgröße
- einige Fehler behoben

RC 1
- Wenn Autoscroll aktiviert ist, kann man ein Fading-Effekt zuschalten. Der ist aber sinnvoller Weise nur dann aktiv, wenn der Text größer ist als das Panel, da sonst ein Teil des Textes u. U. schwer zu lesen wäre...
- manuelles Scrolling auch während Autoscroll möglich
- Padding (horiz./vert.) über Rechtsklick --> Properties.
- Unterstützung für foo_lyricsdb, wenn das jemand statt des Lyricsgrabbers benutzt (liegen beide DLL's im components-Ordner, wird aber der Lyricsgrabber bevorzugt. Kann über "Properties" umgestellt werden, wenn man den Eintrag bei "Lyrics Search Command" auf "get from db" ändert).
- Downloadmöglichkeit bei Radio, Audio CD und Last.fm abgeschaltet (nicht dass versucht wird, da in die Tags zu schreiben...)
- Bisschen Code bereinigt

Für die Songtext-Downloadmöglichkeit benötigt man entweder den Lyricsgrabber 0.3.0.7a oder LyricsDB 0.0.8beta0 defekter link entfernt - grimes.
Zumindest letzteres gilt aber als Crashware!
(Deshalb die Bevorzugung des Lyricsgrabbers)

Bitte sagt Bescheid, wenn irgendwas nicht so funktioniert, wie man es erwartet.
Danke.

Cabalist

Schon sehr schön dein Lyrics Panel tedgo. Hätte da allerdings noch einen Vorschlag/Wunsch. Bei Lyricsanzeige per foo_textdisplay ist es möglich, nicht die Lyrics des aktuell laufenden Songs zu zeigen sondern auch des in der Playlist ausgewählten. Fand ich ganz schön, wenn man mal in 'nem Text rumstöbern will ohne den Song zu wechseln (evtl auch wenn gar kein Song läuft).

cu
cabalist

tedgo

Hm, das wollte ich so nicht einbauen, da ich das Panel ja in meine Config einbauen wollte und da alles auf Now Playing ausgerichtet ist.
Du könntest es saber selbst einbauen.

Vielleicht schau ich es mir diese Woche noch einmal an und baue ein Rechtsklick-Option wie im Item Details Panel ein, mit dem man von Now Playing auf Focus Item umstellen kann.
(Wollte das Panel aber eigentlich bewusst schlicht halten...).

Cabalist

Wenn ich wüsste wie, würd ichs selbst einbauen  :crazy2:

Wenn du das so nicht nutzen magst und du das Teil schlicht halten willst musst du das aber nicht wegen mir extra einbauen. Könnte ja genauso gut das foo_textdisplay wieder benutzen (nutz zb das autoscroll von dir eh nicht). Wollt mir nur eine Component ersparen (WSH Panel Mod nutz ich halt sowieso) ;-)


tedgo

Ich werds mir diese Woche noch mal ansehen. Muss sowieso noch etwas dran basteln, weil das Fading (oder besser FillGradRect, mit dem ich das Fading realisiert habe) eine Macke hat, die ich zu umgehen versuche...

qwert73

Zitat von: tedgo in 31. Januar 2010, 18:10:42
Ich werds mir diese Woche noch mal ansehen.

Als DUI-User fände ich es toll, wenn das Anzeigeverhalten der global gesetzten Option entsprechen würde.  ::)

tedgo

Da muss ich mir erst mal die DUI genauer ansehen ;)
Ich kenne das Verhalten da zu wenig, weil ich ausschließlich die CUI nutze.
Aber ich werde sehen, was ich machen kann.

qwert73

Es gibt halt nur zwei Optionen in der DUI: "Prefer Selection" und "Prefer playing track", die in den Einstellungen unter Display auswählbar sind.

tedgo

Hm, da muss ich mal sehen, ob ich diese Einstellung im WSH Panel mod abgreifen kann...
Wüsste jetzt aber nicht, dass das geht. Aber das muss ich mir noch mal genauer ansehen. Falls es geht, muss ich meine gesamte Scriptsammlung mal anpassen, dass sie globaler funktioniert (falls jemand die Scripts aus meiner Config auch in der DUI benutzen möchte).

grimes

Zitat von: qwert73 in 31. Januar 2010, 19:35:42
Es gibt halt nur zwei Optionen in der DUI: "Prefer Selection" und "Prefer playing track", die in den Einstellungen unter Display auswählbar sind.

Da die Einstellung unter Display zu finden ist, müsste sie global gelten, nicht nur für DUI, sondern auch für CUI. Mir ist allerdings kein CUI-Element bekannt, dass mit dieser Einstellung beeinflussbar ist.

qwert73

Zitat von: grimes in 31. Januar 2010, 20:18:01
Da die Einstellung unter Display zu finden ist, müsste sie global gelten, nicht nur für DUI ...
Die Einstellung ist dafür gedacht, um das Anzeigeverhalten von Ui Elementen des Typs "Selection Information" zu bestimmen. Schön ist es aber sicherlich nicht, dass CUI-User über Optionen stolpern, mit denen sie nichts anfangen können.

Spirit_of_the_ocean

Ich bin etwas planlos. Ich würde gerne ein Tack info mod panel ersetzen. Darin hab ich Buttons für Rating außerdem Informationen wie z.B. wie oft der Titel gespielt worden ist Künstlername  Album etc.

Wie kann ich diese Metadaten ins WSH mod panel bekommen?
Wie kann ich ein Bild für den Codec anzeigen lassen, der sich mit neuem Titel ändert (wenn anderer Codec)?
Wie bekomme ich bekomme ich Ratingbuttons hin?

Ich habe schon nach Beispielen geschaut wie man an die Metadaten rankommt, aber ich hab nichts passendes gefunden.  :(

tedgo

Beispiel (nur ein schnell runtergetippter Code-Schnipsel):
Du willst die Metadaten ARTIST, ALBUM, TITLE haben.


var metadb, fileinfo;

function get_metadb () {
metadb = fb.GetNowPlaying();
var a, b, c;

if (metadb) {
fileinfo = metadb.GetFileInfo();
a = fileinfo.MetaValue(fileinfo.MetaFind("artist"), 0);
b = fileinfo.MetaValue(fileinfo.MetaFind("album"), 0);
c = fileinfo.MetaValue(fileinfo.MetaFind("title"), 0);
artist = a ? a : "";
album = b ? b : "";
title = c ? c : "";
} else {
artist = "";
album = "";
title = "";
}
}

get_metadb();

function on_paint()gr) {
gr.GdiDrawText(artist, ...
gr.GdiDrawText(album, ...
gr.GdiDrawText(title, ...
und was halt sonst noch alles gezeichnet werden soll
}

function on_playback_new_track() {
get_metadb();
window.Repaint();
}

function on_playback_stop() {
fileinfo && fileinfo.Dispose(); // Damit die Fileinfo wieder aus dem Speicher gelöscht wird
window.Repaint();
}


Du könntest das ganze auch mit Titleformatting abfragen, das wäre wesentlich einfacher:
z. B.:

var artist = fb.TitleFormat("[%artist%]");
var album = fb.TitleFormat("[%album%]");
var title = fb.TitleFormat("%title%");

function on_paint(gr) {
gr.GdiDrawText(artist.Eval(), ...
gr.GdiDrawText(album.Eval(), ...
gr.GdiDrawText(title.Eval(), ...
usw.
}

function on_playback_new_track() {
window.Repaint();
}

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


Ich rate aber eher dazu, für die reine Anzeige der Trackinfos auf das Item Details Panel umzusteigen bzw. für die DUI das Text Display, wenn du keine außergewöhnlichen Hintergründe oder sonstiges zeichnen möchtest.

Für den Codec könntest du ähnlich vorgehen:
entweder:
codec = fileinfo.InfoValue(fileinfo.InfoFind("codec"));
oder:
codec = fb.TitleFormat("%codec%").Eval();

und dann:
var img = gdi.Image(Pfad + codec + ".png");
gr.DrawImage(img, ...

Fürs Rating gibt es ja schon eine Menge Beispielscripts im WSH Thread auf hydrogenaudio.
Man muss halt den Buttonklick auf das gewünschte Areal begrenzen, wenn man die Rating-Funktion gemeinsam mit anderen Infos in einem Panel haben will.
Dafür habe ich jetzt aber leider auch kein passendes Beispiel, da mein eigenes Rating-Script sich gewaltig von denen auf hydrogenaudio unterscheidet und ich es in einem separaten Panel habe...

Spirit_of_the_ocean

HI!
Zu deinem ersten Code: Der funktioniert nicht.
Was muss denn hinter:
gr.GdiDrawText(artist, statt der "..."
Was muss da eingesetzt werden? Ich hab keine Ahnung von Jscript.

Ich bekomme nur immer:
'gr' ist undefiniert
Ln: 25, Col: 2
<no source text available>


Item Display hat den Nachteil, dass ich eben kein Bild anzeigen lassen kann und keine Buttons benutzen kann.