Vorab...ich habe v2 64bit erst einmal portable installiert (s. Anhang) Die Konfiguration basiert hauptsächlich auf einer Konfiguration von Grimes.
Jetzt meine ersten Fragen:
1. In wie weit kann man eigentlich in DUI selbst konfigurieren? Zusätzliche Fenster hinzufügen für andere Anzeigen usw.(z.B. über Plugins). Oder geht das nicht?
2. Unter dem Reiter Images befindet sich ein Reiter Flag. Kann ich diesen selbst so konfigurieren, das er mir die Landesflagge des Artist anzeigt?
Konfigurieren: View | Layout | Enable layout editing mode
Flag: Habe mir ein Skript für JPanel Script 3 geschrieben
//flag by grimes
//fb2k v2+, JScript Panel 3+
//DUI/CUI ready
// ==PREPROCESSOR==
// @name "flag"
// @version "2"
// @author "grimes"
// ==/PREPROCESSOR==
var cfg_foobarpath = window.GetProperty("foobar path:", fb.Profilepath);
var cfg_flag = window.GetProperty("flag folder:", "flags");
var svg_file = cfg_foobarpath + cfg_flag + "\\noflag.svg";
var svg_content = utils.ReadUTF8(svg_file);
var dui = window.IsDefaultUI;
var original = utils.LoadSVG(svg_file);
function on_paint(gr) {
gr.FillRectangle(0, 0, window.Width, window.Height, dui == 1 ? window.GetColourDUI(1) : window.GetColourCUI(3));
if (original) {
var scale = 0;
var x = 0,
y = 0;
var scale_w = window.Width / original.Width;
var scale_h = window.Height / original.Height;
if (scale_w <= scale_h) {
scale = scale_w;
y = (window.Height - original.Height * scale) / 2;
} else {
scale = scale_h;
x = (window.Width - original.Width * scale) / 2;
}
gr.DrawImage(original, x, y, original.Width * scale, original.Height * scale, 0, 0, original.Width, original.Height);
}
}
if(fb.IsPlaying || fb.IsPaused) {
country = fb.TitleFormat("%composer_nation%").Eval();
original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
window.Repaint();
}
else {
original = utils.LoadSVG(svg_file);
window.Repaint();
}
function on_playback_new_track() {
country = fb.TitleFormat("%composer_nation%").Eval();
original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
window.Repaint();
}
function on_playback_stop(reason) {
original = utils.LoadSVG(svg_file);
window.Repaint();
}
Die Flaggen müssen im svg-Format vorliegen (download Anhang). Ich lasse die %composer_nation% anzeigen.
ok. THX.
und weiter gehts:
1. Könnte man die Anzeige der Seekbar durch einen laufenden Balken ersetzen. Man kann hier den Lautstärkeregler öfter mit der Seekbar verwechseln.
2. Wie bekommt man unter den Reiter Text auch Text rein? Ich habe viele Infos zum Artist in Text- und/oder lfml-Dateien.
1. Geht nicht
2. JScript Panel 3, sample scripts: Text Display oder Text Reader
Zitat von: grimes in 10. November 2022, 16:38:541. Geht nicht
2. JScript Panel 3, sample scripts: Text Display oder Text Reader
Super :top:
Habs auch mit dem entsprechenden Pfad hinbekommen.
THX :top:
So langsam kann ich mich mit der v2 64bit anfreunden. :)
Jetzt habe ich eigentlich wieder alles beisammen, was ich vorher in der Konfig hatte (s.Anhang).
Jetzt müsste ich nur noch den Custom Title im Text in die Mitte bekommen. Auf die Anzeige der Flagge des Heimatlandes des/der Interpreten kann ich verzichten.
Vielen Dank an Grimes für die tolle Hilfe. :top:
Center: Geht nicht.
Du musst noch die Schriftart "FontAwesome" installieren. https://github.com/marc2k3/jscript-panel/releases
Ich hab die Schriftart installiert. Aber wie erkenne ich in foobar, ob die wirklich installiert ist?
In Text Reader ist bei längerem Text unten ein Pfeil anstatt eines hässlichen Kästchens.
Ahhhh, übersieht man glatt.
Center: Die Lösung
Füge ein im Skript (Configure) nach var panel = new _panel();
panel.draw_header = function (gr, text) {
gr.WriteText(text, this.fonts.title, this.colours.highlight, LM, 0, this.w - (LM * 2), TM, DWRITE_TEXT_ALIGNMENT_CENTER, DWRITE_PARAGRAPH_ALIGNMENT_CENTER, DWRITE_WORD_WRAPPING_NO_WRAP, DWRITE_TRIMMING_GRANULARITY_CHARACTER);
gr.DrawLine(LM, TM + 0.5, this.w - LM, TM + 0.5, 1, this.colours.highlight);
}
https://hydrogenaud.io/index.php/topic,110516.msg1018891.html#msg1018891
Ich mach wohl wieder was falsch. s. Anhang.
Da fehlt ein } vor var text.
ok. Habs hinbekommen. THX
...und noch eine Frage:
Kann man die blaue "Überschrift" in Playlist View für das jeweilige Album irgendwo/irgendwie selbst gestalten?
s.Anhang
Die Schriftgröße kannst Du nur für die gesamte Playlist ändern: Preferences | Display | DUI | Colors & Fonts | Fonts | Playlists
Die Farbe: Preferences | Display | DUI | Colors & Fonts | Colors | Highlight
Die Syntax: Preferences | DUI | Display | Playlist View | Custom grouping schemes
Zitat von: grimes in 13. November 2022, 15:13:02Die Syntax: Preferences | DUI | Display | Playlist View | Custom grouping schemes
Dort habe ich eine neue Syntax geschrieben und als "new" gespeichert:
%artist% - %Album% - %date% [%codec% / %PLR_album%]
Aber es tut sich nichts. :(
Oder muss ich die erst irgendwo aktivieren?
Ja, Du musst aktivieren: rechtklick Playlistkopf | Groups. Dann Schema auswählen.
Ahhh ja. THX
Das muss man halt wissen. ;)
Zitat von: grimes in 09. November 2022, 17:23:15Konfigurieren: View | Layout | Enable layout editing mode
Flag: Habe mir ein Skript für JPanel Script 3 geschrieben
//flag by grimes
//fb2k v2+, JScript Panel 3+
//DUI/CUI ready
// ==PREPROCESSOR==
// @name "flag"
// @version "2"
// @author "grimes"
// ==/PREPROCESSOR==
var cfg_foobarpath = window.GetProperty("foobar path:", fb.Profilepath);
var cfg_flag = window.GetProperty("flag folder:", "flags");
var svg_file = cfg_foobarpath + cfg_flag + "\\noflag.svg";
var svg_content = utils.ReadUTF8(svg_file);
var dui = window.IsDefaultUI;
var original = utils.LoadSVG(svg_file);
function on_paint(gr) {
gr.FillRectangle(0, 0, window.Width, window.Height, dui == 1 ? window.GetColourDUI(1) : window.GetColourCUI(3));
if (original) {
var scale = 0;
var x = 0,
y = 0;
var scale_w = window.Width / original.Width;
var scale_h = window.Height / original.Height;
if (scale_w <= scale_h) {
scale = scale_w;
y = (window.Height - original.Height * scale) / 2;
} else {
scale = scale_h;
x = (window.Width - original.Width * scale) / 2;
}
gr.DrawImage(original, x, y, original.Width * scale, original.Height * scale, 0, 0, original.Width, original.Height);
}
}
if(fb.IsPlaying || fb.IsPaused) {
country = fb.TitleFormat("%composer_nation%").Eval();
original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
window.Repaint();
}
else {
original = utils.LoadSVG(svg_file);
window.Repaint();
}
function on_playback_new_track() {
country = fb.TitleFormat("%composer_nation%").Eval();
original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
window.Repaint();
}
function on_playback_stop(reason) {
original = utils.LoadSVG(svg_file);
window.Repaint();
}
Die Flaggen müssen im svg-Format vorliegen (download Anhang). Ich lasse die %composer_nation% anzeigen.
Ich habe das Script mal entsprechend für mich geändert und
%composer_nation% in
%country% geändert, da bei mir das Land in %country% steht. Allerdings müsste wohl noch der Pfad zu den country.svg irgendwo im Script stehen. Der lautet :
Zitate:\Programme\foobar2000_v2_64bit\flag\%country%.svg
Bsp. Tag Country:Deutschland = Deutschland.svg
Ich bitte nochmals um Hilfe.
Das habe ich ganz geschickt gemacht:
rechtsklick auf panel | Properties
foobar path: e:\Programme\foobar2000_v2_64bit\
flag folder: flag
mmmh...bis hierhin komm ich (s. Anhang) Aber dann gehts nicht weiter... :(
Markieren und öffnen geht nicht. Ich mach wohl wieder was falsch... ::)
Klick in das blaue Feld und gebe Deinen Pfad an.
Man kann es in meinem Anhang leider nicht sehen, aber es gibt bei mir keinen Eintrag unter Name
Dort fehlen foobar path und flag folder.
Ohh, Versuch mal rechtskick Panel | Reload
EDIT: Ich sehe gerade: Du hast "Clear" (Löschen) gedrückt. Drücke in diesem Falle "Apply".
Leider keine Änderung. Vielleicht habe ich im Script was zerschossen.
Werds mal mit dem Original nochmal versuchen.
So, jetzt funktioniert alles. Hatte bestimmt bei meinen Änderungen im Script einen Fehler gemacht.
Bleibt noch eine Frage:
Wie bekomme über der angezeigten Flagge die Länderbezeichnung angezeigt?
Da bin ich zu blöd für.
Na...nicht gleich übertreiben. Kein Mensch ist vollkommen... ;)
Du hast mir dabei soviel geholfen :top:
...alles geht halt nicht :^^:
Im Feld Info/Text werden mir ü/ä/ö/ß nur krytisch angezeigt.
Was kann ich tun, damit auch diese Textzeichen korrekt angezeigt werden.
Vorhandenes Script:
// ==PREPROCESSOR==
// @name "Text Reader"
// @author "marc2003"
// @import "%fb2k_component_path%helpers.txt"
// @import "%fb2k_component_path%samples\js\lodash.min.js"
// @import "%fb2k_component_path%samples\js\common.js"
// @import "%fb2k_component_path%samples\js\panel.js"
// @import "%fb2k_component_path%samples\js\text.js"
// ==/PREPROCESSOR==
// https://marc2k3.github.io/jscript-panel/gallery/text-reader/
var panel = new _panel()
panel.draw_header = function (gr, text) {
gr.WriteText(text, this.fonts.title, this.colours.highlight, LM, 0, this.w - (LM * 2), TM, DWRITE_TEXT_ALIGNMENT_CENTER, DWRITE_PARAGRAPH_ALIGNMENT_CENTER, DWRITE_WORD_WRAPPING_NO_WRAP, DWRITE_TRIMMING_GRANULARITY_CHARACTER);
gr.DrawLine(LM, TM + 0.5, this.w - LM, TM + 0.5, 1, this.colours.highlight);
}
var text = new _text('text_reader2', LM, TM, 0, 0);
panel.item_focus_change();
function on_colours_changed() {
panel.colours_changed();
window.Repaint();
}
function on_font_changed() {
panel.font_changed();
window.Repaint();
}
function on_item_focus_change() {
panel.item_focus_change();
}
function on_key_down(k) {
text.key_down(k);
}
function on_metadb_changed() {
text.metadb_changed();
}
function on_mouse_lbtn_up(x, y) {
text.lbtn_up(x, y);
}
function on_mouse_move(x, y) {
text.move(x, y);
}
function on_mouse_rbtn_up(x, y) {
return panel.rbtn_up(x, y, text);
}
function on_mouse_wheel(s) {
text.wheel(s);
}
function on_paint(gr) {
panel.paint(gr);
panel.draw_header(gr, text.header_text());
text.paint(gr);
}
function on_playback_dynamic_info_track() {
panel.item_focus_change();
}
function on_playback_new_track() {
panel.item_focus_change();
}
function on_playback_stop(reason) {
if (reason != 2) {
panel.item_focus_change();
}
}
function on_playlist_switch() {
panel.item_focus_change();
}
function on_size() {
panel.size();
text.w = panel.w - (LM * 2);
text.h = panel.h - TM;
text.size();
}
Kann ich nicht nachvollziehen. Was ist Feld Info/Text? Welche Codierung hat die txt-Datei? (UTF-8-BOM)
Ich glaube Panel Info/Text wäre korrekter gewesen (s. Anhang)
Hier das Script:
// ==PREPROCESSOR==
// @name "Text Reader"
// @author "marc2003"
// @import "%fb2k_component_path%helpers.txt"
// @import "%fb2k_component_path%samples\js\lodash.min.js"
// @import "%fb2k_component_path%samples\js\common.js"
// @import "%fb2k_component_path%samples\js\panel.js"
// @import "%fb2k_component_path%samples\js\text.js"
// ==/PREPROCESSOR==
// https://marc2k3.github.io/jscript-panel/gallery/text-reader/
var panel = new _panel()
panel.draw_header = function (gr, text) {
gr.WriteText(text, this.fonts.title, this.colours.highlight, LM, 0, this.w - (LM * 2), TM, DWRITE_TEXT_ALIGNMENT_CENTER, DWRITE_PARAGRAPH_ALIGNMENT_CENTER, DWRITE_WORD_WRAPPING_NO_WRAP, DWRITE_TRIMMING_GRANULARITY_CHARACTER);
gr.DrawLine(LM, TM + 0.5, this.w - LM, TM + 0.5, 1, this.colours.highlight);
}
var text = new _text('text_reader2', LM, TM, 0, 0);
panel.item_focus_change();
function on_colours_changed() {
panel.colours_changed();
window.Repaint();
}
function on_font_changed() {
panel.font_changed();
window.Repaint();
}
function on_item_focus_change() {
panel.item_focus_change();
}
function on_key_down(k) {
text.key_down(k);
}
function on_metadb_changed() {
text.metadb_changed();
}
function on_mouse_lbtn_up(x, y) {
text.lbtn_up(x, y);
}
function on_mouse_move(x, y) {
text.move(x, y);
}
function on_mouse_rbtn_up(x, y) {
return panel.rbtn_up(x, y, text);
}
function on_mouse_wheel(s) {
text.wheel(s);
}
function on_paint(gr) {
panel.paint(gr);
panel.draw_header(gr, text.header_text());
text.paint(gr);
}
function on_playback_dynamic_info_track() {
panel.item_focus_change();
}
function on_playback_new_track() {
panel.item_focus_change();
}
function on_playback_stop(reason) {
if (reason != 2) {
panel.item_focus_change();
}
}
function on_playlist_switch() {
panel.item_focus_change();
}
function on_size() {
panel.size();
text.w = panel.w - (LM * 2);
text.h = panel.h - TM;
text.size();
}
Die Textdatei ist in UTF-8 gespeichert.
Kann es nachvollziehen. Bei mir funktioniert die Kodierung UTF8-BOM, (konvertieren mit notepad++).
Danke...UTF8-BOM geht bei mir auch. :top:
Konvertieren geht auch mit dem Windows Editor. Unten bei Konvertieren UTF-8 mit BOM einstellen. Dann nochmaliges abspeichern und überschreiben
Noch eine Frage zur Anzeige der Länderflagge.
Wie kann ich es erreichen, das die Größe der Flagge sich an die Größe der JScript-Fenster anpasst?
Hier das verwendete Script von grimes:
//flag by grimes
//fb2k v2+, JScript Panel 3+
//DUI/CUI ready
// ==PREPROCESSOR==
// @name "flag"
// @version "2"
// @author "grimes"
// ==/PREPROCESSOR==
var cfg_foobarpath = window.GetProperty("foobar path:", fb.Profilepath);
var cfg_flag = window.GetProperty("flag folder:", "flags");
var svg_file = cfg_foobarpath + cfg_flag + "\\noflag.svg";
var svg_content = utils.ReadUTF8(svg_file);
var dui = window.IsDefaultUI;
var original = utils.LoadSVG(svg_file);
function on_paint(gr) {
gr.FillRectangle(0, 0, window.Width, window.Height, dui == 1 ? window.GetColourDUI(1) : window.GetColourCUI(3));
if (original) {
var scale = 0;
var x = 0,
y = 0;
var scale_w = window.Width / original.Width;
var scale_h = window.Height / original.Height;
if (scale_w <= scale_h) {
scale = scale_w;
y = (window.Height - original.Height * scale) / 2;
} else {
scale = scale_h;
x = (window.Width - original.Width * scale) / 2;
}
gr.DrawImage(original, x, y, original.Width * scale, original.Height * scale, 0, 0, original.Width, original.Height);
}
}
if(fb.IsPlaying || fb.IsPaused) {
country = fb.TitleFormat("%country%").Eval();
original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
window.Repaint();
}
else {
original = utils.LoadSVG(svg_file);
window.Repaint();
}
function on_playback_new_track() {
country = fb.TitleFormat("%country%").Eval();
original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
window.Repaint();
}
function on_playback_stop(reason) {
original = utils.LoadSVG(svg_file);
window.Repaint();
}
Ersetze entsprechende Zeile mit:
gr.DrawImage(original, 0, 0, window.Width, window.Height, 0, 0, original.Width, original.Height);
Danke :top: