Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Columns UI appearance (Read 3297590 times) previous topic - next topic
0 Members and 7 Guests are viewing this topic.

Re: Columns UI appearance

Reply #2350
Current dark theme that I'm running the most.
Based on the very well done Catrox theme...

... and thanks to the foobar community that keep on developing awesome tools/panels.



Re: Columns UI appearance

Reply #2353
Share? No, I've never done that before. I always keep everything to myself. :P

Have you tested JSPlaylist and Smooth Browser from the latest JSP3 beta already? They might be a sluggish on larger collections. ( I remember your posts about CPU usage /maybe crashes??)

Disclaimer for Smooth Browser here: https://marc2k3.github.io/jscript-panel/gallery/smooth-browser/

I'll post something later on. I need to remove my personal tweaks.

edit: with the exception of the middle panel with over-layed text, you can recreate it with the samples already provided



Menu button
Smooth browser
Thumbs
JS Playlist
Track Info + Spectrogram Seekbar + Buttons (requires ffmpeg: https://marc2k3.github.io/jscript-panel/gallery/spectrogram-seekbar/ )
Status Bar


Re: Columns UI appearance

Reply #2355
64bit test layout with JScript3 and code samples from marc2k3. It would be nice to somehow replace panel tabs with one jscript panel and buttons but can't figure out how to do it. And with 32bit version I was using Peakmeter Spectrum Visualisation plugin which looks much better than default F2k spectrum analyser.


 

Re: Columns UI appearance

Reply #2356
If each tab contained a single JScript Panel it would be easy enough. You could replace the tabs with a single panel and add this code...

Code: [Select]
// ==PREPROCESSOR==
// @author "marc2003"
// @name "Panel Receiver"
// ==/PREPROCESSOR==

var script = window.GetProperty('2K3.SCRIPT', 'user-components-x64\\foo_jscript_panel3\\samples\\JS Playlist.txt');
var pre = '';
var text = utils.ReadUTF8(fb.ProfilePath + script);
var lines = text.split('\r\n');
if (lines[0].indexOf('// ==PREPROCESSOR==') == 0) {
for (var i = 0; i < lines.length; i++) {
if (lines[i].indexOf('// @import') == 0) {
var fq = lines[i].indexOf('"') + 1;
var lq = lines[i].lastIndexOf('"') - fq;
var file = lines[i].substr(fq, lq).replace('%fb2k_profile_path%', fb.ProfilePath).replace('%fb2k_component_path%', fb.ComponentPath);
pre += utils.ReadUTF8(file) + '\n';
} else if (lines[i].indexOf('// ==/PREPROCESSOR==') == 0) {
break;
}
}
}

eval(pre + text);

(function (global) {
var original_callback = global.on_notify_data;
global.on_notify_data = function (name, info) {
if (name == 'load_script') {
window.SetProperty('2K3.SCRIPT', info);
window.Reload();
} else if (original_callback) {
original_callback(name, info);
}
}
})(this);

Now you need a secondary panel which contains a button/menu that would send notifications to this panel whenever it was clicked. You should just need to supply the full script path something like this...

Code: [Select]
// must be relative to fb.ProfilePath - do not make it absolute
window.NotifyOthers('load_script', 'user-components-x64\\foo_jscript_panel3\\samples\\smooth browser.txt');

edit: of course any current "state" would be lost each time new content is loaded.


Re: Columns UI appearance

Reply #2358
foobar2000 v2 64-bit, Columns UI, Windows 11.

"Flag"
This is cool and something I've thought about doing before. Can you explain any more about it? Does it use a separate component or is it a script/custom field? I'm interested. I think it would be fun to track country of origin.

EDIT: btw, here is a screenshot of my Columns UI interface as of this morning.

Re: Columns UI appearance

Reply #2359
It is a JScript Panel 3 Script:

Code: [Select]
//flag by grimes
//fb2k v2+, JScript Panel 3+
//DUI/CUI ready

// ==PREPROCESSOR==
// @name "flag"
// @version "4"
// @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);
    }
}

function get_flag() {
country = fb.TitleFormat("%composer_nation%").Eval();
original = utils.LoadSVG(cfg_foobarpath + cfg_flag + "\\" + country + ".svg");
window.Repaint();
}

if(fb.IsPlaying || fb.IsPaused) {
get_flag();
}
else {
original = utils.LoadSVG(svg_file);
    window.Repaint();
}

function on_playback_new_track() {
    get_flag();
}

function on_playback_stop(reason) {
original = utils.LoadSVG(svg_file);
    window.Repaint();
}

function on_colours_changed() {
original = utils.LoadSVG(svg_file);
window.Repaint();
}

function on_item_focus_change() {
if(!fb.IsPlaying) {
original = utils.LoadSVG(svg_file);
}
window.Repaint();
}

%composer_nation% has to be replaced by your country tag. Flags in svg-Format in attachment.


Re: Columns UI appearance

Reply #2361
axw, how do you do that. THANK YOU ;)

Re: Columns UI appearance

Reply #2362
My take on ColumnsUI 2


Re: Columns UI appearance

Reply #2364
...and mine  :D

Re: Columns UI appearance

Reply #2365
Foobar 2.0 64-bit. ColumnsUI 2.0*. JScript Panel 3.
All custom script, fonts and components are available on attachments.

Compact layout with JSP3 scripts
- Thumbs, Text Display, Album Art script,
- JS Playlist and
- Dynamic track compact.


Main layout with custom track and material round and segoe fluent icons.
Smooth Playlist Manager (modified), Smooth browser and JS Playlist (modified).


*custom build just to make the tab stack background darker.
Tabs stack icons are just using segoe fluent icons
Spoiler (click to show/hide)


Credits to original script by brett and components and script by marc2k3

Re: Columns UI appearance

Reply #2366
great men . very impressive. thanks for the share files.
my column UI 64 bits




share files down below :  the seekbar , the spinning vinyl , and the lastFM + biography

Re: Columns UI appearance

Reply #2367
i cannot figure out : Tabs stack icons are just using segoe fluent icons . i made this also . nothing .
how to do this ? can i see your layout ? explain to me . thanks

Re: Columns UI appearance

Reply #2368
@eurekagliese

Hi :) Thanks for good "Track Info + Seekbar + Buttons (track_custom_v2.js)" panel.

Isn't "Repeat Track" and "Repeat Playlist" reversed?
I edited. maybe i'm wrong.




Default UI foobar2000 v2.0 64bit (Image edited by me)
SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD 490 PRO, DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH-ULT900N (ULT WEAR) (made a Upgrade/Balanced Cable by myself)

Re: Columns UI appearance

Reply #2369
i cannot figure out : Tabs stack icons are just using segoe fluent icons . i made this also . nothing .
how to do this ? can i see your layout ? explain to me . thanks

Here's the layout
Spoiler (click to show/hide)

Make sure to change to fonts
Spoiler (click to show/hide)

@Air KEN
Regarding the repeat track, I've merged it into a single button. Shuffle order cycle with left click and repeat cycle with right click and middle click for random (See tooltips).

EDIT: Ah, thanks for the hint, I rarely use that repeat button.  Wait, the order is already correct on mine.

Re: Columns UI appearance

Reply #2370
You are fast like the light ..... thanks a lot for your help . appreciate . continue . We love Foobar2k .  :D  :D  :D  :D  :D  :D  :D


MOD: edited


Re: Columns UI appearance

Reply #2372
Foobar 2.0 64-bit. ColumnsUI 2.0*. JScript Panel 3.
All custom script, fonts and components are available on attachments.
Spoiler (click to show/hide)

The track_custom script updated.

Re: Columns UI appearance

Reply #2373
@eurekagliese

Thanks :)
SHURE SRH1840, SENNHEISER HD660S2, SENNHEISER HD 490 PRO, DT 1990 PRO, HiFiMAN Edition XS, Bowers & Wilkins P7, FiiO FT5, 水月雨 (MOONDROP) 空鳴 - VOID, Nakamichi Elite FIVE ANC, SONY WH-ULT900N (ULT WEAR) (made a Upgrade/Balanced Cable by myself)

Re: Columns UI appearance

Reply #2374
If each tab contained a single JScript Panel it would be easy enough. You could replace the tabs with a single panel and add this code...

Code: [Select]
// ==PREPROCESSOR==
// @author "marc2003"
// @name "Panel Receiver"
// ==/PREPROCESSOR==

var script = window.GetProperty('2K3.SCRIPT', 'user-components-x64\\foo_jscript_panel3\\samples\\JS Playlist.txt');
var pre = '';
var text = utils.ReadUTF8(fb.ProfilePath + script);
var lines = text.split('\r\n');
if (lines[0].indexOf('// ==PREPROCESSOR==') == 0) {
for (var i = 0; i < lines.length; i++) {
if (lines[i].indexOf('// @import') == 0) {
var fq = lines[i].indexOf('"') + 1;
var lq = lines[i].lastIndexOf('"') - fq;
var file = lines[i].substr(fq, lq).replace('%fb2k_profile_path%', fb.ProfilePath).replace('%fb2k_component_path%', fb.ComponentPath);
pre += utils.ReadUTF8(file) + '\n';
} else if (lines[i].indexOf('// ==/PREPROCESSOR==') == 0) {
break;
}
}
}

eval(pre + text);

(function (global) {
var original_callback = global.on_notify_data;
global.on_notify_data = function (name, info) {
if (name == 'load_script') {
window.SetProperty('2K3.SCRIPT', info);
window.Reload();
} else if (original_callback) {
original_callback(name, info);
}
}
})(this);

Now you need a secondary panel which contains a button/menu that would send notifications to this panel whenever it was clicked. You should just need to supply the full script path something like this...

Code: [Select]
// must be relative to fb.ProfilePath - do not make it absolute
window.NotifyOthers('load_script', 'user-components-x64\\foo_jscript_panel3\\samples\\smooth browser.txt');

edit: of course any current "state" would be lost each time new content is loaded.
Thanks Marc2k3 for this script . Work great... 👍👍👍
I suppose it's impossible to have 2 jscript panel loaded with one button .

MOD: Edited