HydrogenAudio

Hosted Forums => foobar2000 => 3rd Party Plugins - (fb2k) => Topic started by: kdx on 2006-08-30 22:24:08

Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: kdx on 2006-08-30 22:24:08
okay, i've finally found the time to put a 0.9er-version (http://www.youngpixel.de/foobar/foo_ui_gfx.zip) together (which is probably more alpha than ever ..  )
ui_columns_ext-functionality is missing right now
if you have bugs or feature requests .. just write them into this thread

to really further develop this plugin, there should be at least one person, who wants to script his own ui and can tell me, what he wants and how he wants to do it ..
i've also experimented with a more interactive way to customize the ui, if there's interest in that ..
another alternative would be to make it possible to load winamps modern skins, but i dont even know, if this can be done or how difficult this would be
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: eddie on 2006-08-30 22:37:26
okay, i've finally found the time to put a 0.9er-version (http://www.youngpixel.de/foobar/foo_ui_gfx.zip) together (which is probably more alpha than ever ..  )
ui_columns_ext-functionality is missing right now
if you have bugs or feature requests .. just write them into this thread

to really further develop this plugin, there should be at least one person, who wants to script his own ui and can tell me, what he wants and how he wants to do it ..
i've also experimented with a more interactive way to customize the ui, if there's interest in that ..
another alternative would be to make it possible to load winamps modern skins, but i dont even know, if this can be done or how difficult this would be



Just tried it.  Seems to be missing misc.lua?

---------------------------
gfx_window: lua-execute error
---------------------------
cannot read misc.lua: No such file or directory
---------------------------
OK 
---------------------------
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-08-31 10:40:00
I get the same misc.lua error, I also get it with the debug version.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: kdx on 2006-08-31 14:56:57
Just tried it.  Seems to be missing misc.lua?

yes, you're right .. somehow i always manage to forget something
should be in now
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: eddie on 2006-08-31 16:53:28

Just tried it.  Seems to be missing misc.lua?

yes, you're right .. somehow i always manage to forget something
should be in now


Works like a charm.

it's too bad there doesn't seem to be a way to switch between Columns UI and your neat-o GFX plugin without a restart.  Or am I missing something?

I love ColumnsUI for editing playlists/etc, but your UI thing is much neater for minimalism.

Either way, thanks!
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: andrew_smolko on 2006-08-31 17:05:59
it's too bad there doesn't seem to be a way to switch between Columns UI and your neat-o GFX plugin without a restart.  Or am I missing something?

foobar doesn't allow to switch UI without restart.

2 kdx
Great!  And the idea to use lua is great! It's really customizable UI. I can't even imagine what effects can be implemeted! Once more - great!

For those who hasn't understood the power of this UI and LUA: you can create your own controls!!!
Look into winamp.lua:
Code: [Select]
button_class = new_base_class(true);
function button_class:create(func, base, down, string, global, no_blend_out)
...

Button is defined in script (if I'm not making a mistake)!
Well, seems to me that it's time to dive into http://www.lua.org (http://www.lua.org)
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: eddie on 2006-08-31 20:21:36
A bug and a question to report.

I notice that when I load up a shoutcast stream, I get an assert firing.  I don't have source code here, so I can't debug the root cause:

---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: C:\Data\USBDrive\Apps\Foobar\foobar2000.exe
File: c:\eigene dateien\visual studio-projekte\#common\misc.inl
Line: 13

Expression: max >= min

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
Abort  Retry  Ignore 
---------------------------


Also, I'm not sure if this is something I'm doing wrong or not, but in the playlist window the add|rem|sel|misc buttons don't seem to do anything.  Is this normal?  I'd like to add things to my playlist somehow.

Cheers!
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: andrew_smolko on 2006-08-31 21:21:47
What about non-rectangular windows? Is this possible in current implemetation?
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: kdx on 2006-09-01 01:52:30
it's too bad there doesn't seem to be a way to switch between Columns UI and your neat-o GFX plugin without a restart.  Or am I missing something?
no, as it is "registered" as a normal ui, this is apararently not possible
the only thing i could do is make ui_gfx (optionally) a "detached" user-interface (like foo_looks was)

I notice that when I load up a shoutcast stream, I get an assert firing.  I don't have source code here, so I can't debug the root cause:
yeah, i'd love to have assertions with a stack trace (anybody knows, if/how this can be easily done?)
anyway, should be fixed (didnt expect a track to have a length of -1 ..  )

Also, I'm not sure if this is something I'm doing wrong or not, but in the playlist window the add|rem|sel|misc buttons don't seem to do anything. Is this normal? I'd like to add things to my playlist somehow.
yes, these buttons have no function yet .. but you can drag&drop things into the playlist

What about non-rectangular windows? Is this possible in current implemetation?
no - but afaik this shouldnt be too difficult .. the only thing i dont really know is, how one should define the shape of a window .?
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: eddie on 2006-09-01 03:08:59

I notice that when I load up a shoutcast stream, I get an assert firing.  I don't have source code here, so I can't debug the root cause:
yeah, i'd love to have assertions with a stack trace (anybody knows, if/how this can be easily done?)
anyway, should be fixed (didnt expect a track to have a length of -1 ..  )


http://msdn.microsoft.com/msdnmag/issues/05/11/Bugslayer/ (http://msdn.microsoft.com/msdnmag/issues/05/11/Bugslayer/)

Something like that could help you out.  SuperAssert will embed a callstack.

Thanks for the fix.  This UI is delicious.  I'd love to have functionality for the add/remove, and perhaps a list of skins to choose from --  but other than that -- superb!
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-09-01 05:09:08
Thanks a lot.  Here are some things I've noticed.

* No longer shows |> marker on current song in playlist near the time, I miss that.

* It'd be nice if there was a way to crop a song from the playlist.  It doesn't seem to be available in foobar's context menu editor dialog, and the function is no longer available in foobar's main context menu (as it was in 0.8)

* "Small font" default font doesn't actually seem to be Arial size 6, as the dialog suggests.  If you open the dialog and click OK, Reload, the font changes  I'm not sure what font it is, but it looks better IMO than Arial size 6 and I can't find it, so I just reset the config and left it the default.

* Setting "Small font" size doesn't seem to affect the font size displayed for windowshade playlist or scrolling title (it did in the 0.8 version).  Only the font name takes effect.  Size and name take effect for bitrate and khz.

* <nevermind>

* If you have the foo_ui_gfx main window and playlist open, and the main window has focus, and you alt+f4 it, foobar closes, which is expected, but when you start foobar again, only the playlist window is visible and the only way to get the main window back seems to be by clicking "Reset Config".

* Setting "Visualization" doesn't seem to have an effect?

* Clicking "Reload" or "Reset Config" makes the seekbar disappear until another track is loaded.

I'll reiterate and expand on these from my previous post:

* The ability to drag and drop links from web browsers onto foobar would be nice.

* In order to update the current song playing title in the playlist in windowshade mode when on a shoutcast stream, you have toggle out and in of windowshade mode in the main window.

And also these, which I consider lower priority:

* Make windowshaded playlist window same width as resized normal view playlist window.

* Ability to format info string in windowshaded playlist window.

---

Sorry for all that .  I really like this plugin and I'll upgrade to 0.9 on my main box in the not too distant future.  I don't know Lua so I'd have to pick it up before scripting my own UI.  I'm happy with the classic winamp look, though it'd be nice if it actually had all of winamp's UI elements (like the mini-vis and functional playlist buttons--most importantly, crop).  I've been using the default skin that comes with it, but I just tried downloading my own and it loads flawlessly.

Thanks again for all your work on this alternative UI.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-09-01 09:14:23
There seems to be a handle leak.  Watching with Process Explorer, clicking "Reload" will cause User Objects to increase by 1 and GDI Objects by 19, but the real damage comes when doing anything else: Hovering over the play buttons doesn't release GDI Objects and neither does scrolling the playlist, causing GDI Objects to skyrocket.

The 0.8 version seems to be affected by the "Reload" bug but not the UI element bug.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: pepoluan on 2006-09-01 11:33:11
@kdx: Screencaps would be nice
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: kdx on 2006-09-01 23:59:02
[quote name='eddie' post='426236' date='Aug 31 2006, 18:08']
http://msdn.microsoft.com/msdnmag/issues/05/11/Bugslayer/ (http://msdn.microsoft.com/msdnmag/issues/05/11/Bugslayer/)
Something like that could help you out.  SuperAssert will embed a callstack.
[/quote]well, thanks for the hint, but unfortunately SuperAssert is only for the .NET-framework
[quote name='eddie' post='426236' date='Aug 31 2006, 18:08']
I'd love to have functionality for the add/remove, and perhaps a list of skins to choose from[/quote]you can extract any classic winamp-skin into the waskin-folder
the add/remove buttons are on the todo-list
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* No longer shows |> marker on current song in playlist near the time, I miss that.
[/quote]you can fix that in the title-formatting-preferences (just put a $if(%_isplaying%,'|> ') before %length%)
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* It'd be nice if there was a way to crop a song from the playlist.  It doesn't seem to be available in foobar's context menu editor dialog, and the function is no longer available in foobar's main context menu (as it was in 0.8)[/quote]hm, this is pretty strange, i thought, it had to be in the context-menu as both the default and columns ui have it in "their" context-menu, but a call to contextmenu_manager::win32_run_menu_context_playlist doesnt show it
i probably have to put it there manually ..
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* "Small font" default font doesn't actually seem to be Arial size 6, as the dialog suggests.  If you open the dialog and click OK, Reload, the font changes  I'm not sure what font it is, but it looks better IMO than Arial size 6 and I can't find it, so I just reset the config and left it the default.[/quote]that's probably because in the script, i setup a font with a name, height, width and weight, which gives you better control about how the font looks .. there should be an "advanced" font selector, where you can choose these parameters ..
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* Setting "Small font" size doesn't seem to affect the font size displayed for windowshade playlist or scrolling title (it did in the 0.8 version).  Only the font name takes effect.  Size and name take effect for bitrate and khz.[/quote]hm yes, i experimented with resizable text-boxes and there the font-height had to equal the text box's height .. i removed this and will probably make it optional ..

[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* If you have the foo_ui_gfx main window and playlist open, and the main window has focus, and you alt+f4 it, foobar closes, which is expected, but when you start foobar again, only the playlist window is visible and the only way to get the main window back seems to be by clicking "Reset Config".
* Clicking "Reload" or "Reset Config" makes the seekbar disappear until another track is loaded.[/quote]both fixed
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
Setting "Visualization" doesn't seem to have an effect?[/quote]no, it was based on ui_extentions, which are not in yet
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* The ability to drag and drop links from web browsers onto foobar would be nice.[/quote]one of the things, which could be a bit more difficult .. i'll look into it ..
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* In order to update the current song playing title in the playlist in windowshade mode when on a shoutcast stream, you have toggle out and in of windowshade mode in the main window.[/quote]i didnt test it, but it should be fixed
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* Make windowshaded playlist window same width as resized normal view playlist window.[/quote]well i see this more as a feature than a bug  but i've put it in (you can turn it off, though)
[quote name='deadfones' post='426256' date='Aug 31 2006, 20:09']
* Ability to format info string in windowshaded playlist window.[/quote]you can already modify it ("Playlist format (window-shade mode)" in prefs)
[quote name='deadfones' post='426286' date='Sep 1 2006, 00:14']
There seems to be a handle leak.  Watching with Process Explorer, clicking "Reload" will cause User Objects to increase by 1 and GDI Objects by 19, but the real damage comes when doing anything else: Hovering over the play buttons doesn't release GDI Objects and neither does scrolling the playlist, causing GDI Objects to skyrocket.
The 0.8 version seems to be affected by the "Reload" bug but not the UI element bug.
[/quote]fixed the UI element bug, the other one will probably need some more searching
[quote name='pepoluan' post='426313' date='Sep 1 2006, 02:33']
@kdx: Screencaps would be nice
[/quote]a screenshot from the 0.8er version can be found here (http://pelit.koillismaa.fi/plugins/interface.php#108)
it's just a classic-winamp-skin rip-off (i'm no designer  )
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: foosion on 2006-09-02 00:33:07

* The ability to drag and drop links from web browsers onto foobar would be nice.
one of the things, which could be a bit more difficult .. i'll look into it ..
See playlist_incoming_item_filter for converting a list of metadb handles into a IDataObject and vice versa.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: haakhi on 2006-09-02 22:53:41
Awesome! This plugin was the blocker for my upgrade to 0.9.
Some small things about the winamp skin script...:
- It seems to have the offset of the song-position-indicator-thingie-picture of by one? It isn't visible with the default skin, but it shows when I use Fusion AMPman (http://www.winamp.com/skins/details.php?id=134854):
(screenshot) (http://img487.imageshack.us/my.php?image=foouigfxfusionjx6.png) (the cyan line)
- A right click menu on the repeat button for selecting different repeat modes would be nice.
- So would a hover tip on the tray icon. It could show a format string... "now playing, next playing"?
- Half-shading the buttons on mouseover is nice and clever, but it looks a bit strange when the buttondown graphic does more than simple shading. Make it optional?
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: andrew_smolko on 2006-09-08 17:18:33

What about non-rectangular windows? Is this possible in current implemetation?
no - but afaik this shouldnt be too difficult .. the only thing i dont really know is, how one should define the shape of a window .?

The shape can be built from bitmap. See http://www.codeproject.com/dialog/BitmapHandling.asp (http://www.codeproject.com/dialog/BitmapHandling.asp). The method implemented there is quite fast.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-09-13 08:09:46
Thanks for the bug fixes

I switched to 0.9 on my main box so I should be able to test this a little more thoroughly.

Bugs:

* I noticed the seekbar disappear on reload bug is fixed, but though it now shows itself, it is unusable.

* I added $if(%_isplaying%,'|> ') to my playlist formatting string, but it only shows itself in the playlist/updates for the song currently playing whenever I click Apply or Save All in the Title Formatting tab.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: kdx on 2006-09-14 15:02:39
- It seems to have the offset of the song-position-indicator-thingie-picture of by one? It isn't visible with the default skin, but it shows when I use Fusion AMPman (http://www.winamp.com/skins/details.php?id=134854):
(screenshot) (http://img487.imageshack.us/my.php?image=foouigfxfusionjx6.png) (the cyan line)
fixed .. (i think the kalak-skin has as glitch there, so i changed the offset in the script and the bitmap in the kalak-skin)

* I noticed the seekbar disappear on reload bug is fixed, but though it now shows itself, it is unusable.

* I added $if(%_isplaying%,'|> ') to my playlist formatting string, but it only shows itself in the playlist/updates for the song currently playing whenever I click Apply or Save All in the Title Formatting tab.
both fixed
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-09-15 05:16:33
Thanks.  A couple more:

Anomaly:

* When multiple files or a folder is dragged onto the main window or playlist, and "cursor follows playback" is deselected in the default foobar ui and "change selection with cursor when 'playback / cursor follows playback' is enabled" is deselected in Preferences > General (so in essence, the cursor is unaffected by playback), all items in the playlist become selected.  Aesthetically, I'd prefer it if they weren't selected (esp. for when dragging onto the main window).  I understand that this behavior is similar to foobar's default ui, so it's not that big of a deal (except for the main window, I just don't see the point .

Bug:

* One cannot drag and drop files onto the playlist and insert them at the current mouse position, instead they are always added to the bottom of the playlist.  I believe it behaved correctly in 0.8 but I may be mistaken.  Anyway, it'd be nice if it behaved in the same way as the default foobar ui (insert items at current mouse position).
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-09-25 23:30:38
Hope I wasn't too non-critical with those reports...

I'm going to look into lua and see if I can't add a couple features: dsp preset toggling with the eq button and total playlist time.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: Wujek_Bogdan on 2006-11-16 10:49:18
http://www.youngpixel.de/foobar/foo_ui_gfx.zip (http://www.youngpixel.de/foobar/foo_ui_gfx.zip) > link is broken :/
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: Paws on 2006-11-16 11:41:22
Yes, its broke. Is this thing better then columns ui? If you could fix link please?
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-11-19 06:52:08
Yes, its broke. Is this thing better then columns ui? If you could fix link please?


Better?  It's different.  It's basically a winamp 2 clone.

Mirror: http://home.comcast.net/~deadfones/foo_ui_gfx-2006-09-25.zip (http://home.comcast.net/~deadfones/foo_ui_gfx-2006-09-25.zip)
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: Paws on 2006-11-19 09:58:54
Hey Thanks Alot deadfones  , i'm going to give it a try. Seems like a hopefully component.
take care.

Edit: Tried it out, its ok. Can't Make it big like foobar.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: deadfones on 2006-11-20 04:15:37
Hey Thanks Alot deadfones  , i'm going to give it a try. Seems like a hopefully component.
take care.

Edit: Tried it out, its ok. Can't Make it big like foobar.


You can resize the playlist, if that's what you mean.  It also supports windowshade mode.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: wolfsong on 2006-11-20 05:26:22
Are there any screenshots of this yet?
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: tns on 2006-11-27 15:13:04
links appear to be down (404)  perhaps someone can post it somewhere?
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: ktr on 2006-11-27 21:54:01
Mirror: http://home.comcast.net/~deadfones/foo_ui_gfx-2006-09-25.zip (http://home.comcast.net/~deadfones/foo_ui_gfx-2006-09-25.zip)




i'll give it a try, *fb2k restart*
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: kdx on 2006-11-27 23:33:24
another mirror is here (http://foobar.dramepics.net/foo_ui_gfx.zip) 
working version can be found here (http://foobar.dramepics.net/foo_ui_gfx.dll)

Quote
Are there any screenshots of this yet?
well, the component itself is basically only a scripting interface for making skins...
a screenshot of the scripted winamp2-clone is here (http://foobar.dramepics.net/screenshot.jpg)
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: zmur on 2006-11-27 23:46:28
how hard is it to make your own skin ?
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: tns on 2006-11-28 10:48:51
@ktr & kdx, thanks for the links!
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: saivert on 2006-11-29 08:18:11
Regarding making a plugin that loads and displays Winamp Modern skins:

This requires the use of the Wasabi framework which Nullsoft developed for their to-be portable Winamp3 (it remained Win32 only though). Winamp 5 took the parts from Wasabi required to display Winamp3 skins (redubbed Modern skins) and incorporated it into it's gen_ff.dll plugin.

The modern skin code was never made open, and the available Wasabi framework lacks that functionality.

If you can get hold of the Wasabi framwork you could possibly use parts of it to make a wrapper for the gen_ff.dll plugin bundled with Winamp 5. Would need som reverse engineering of the Winamp core.

Moderns skins use the MAKI script language which is compiled into bytecode (just like Java) in order to execute faster together with lots of XML which defines the user interface and event handlers.

Wasabi was a nice idea that was cannabalized by Nullsoft.

So in a way your plugin is a lot like it. Except uses LUA as scripting language (which is better IMHO).

Actually FooBar2000 is much better because it allows one to code his own UI for it. That beats any skinning engine hands down. But I wish FooBar2000 was Client/Server based (like XMMS and DeliPlayer). That would allow the UI to crash without bringing down the rest of the player. I am thinking of making a foo_ui_null plugin soon which really is no UI at all. Then you can just use the foo_controlserver plugin to control FooBar2000 via Telnet for the ultimate hackers UI.

A quick suggestion for the default skin.

Code: [Select]
.
.
.
function option(key, defvalue, show, list)
    local value = config.load(defvalue, key);
    config.save(value, key, show, list);
    return value;
end

--This is the new stuff
skinfolder = option("skinfolder", "myXMMS", true);


Then you will have to do some search and replace.
Replace all occurences of
Code: [Select]
"\\waskin

with
Code: [Select]
skinfolder .. "\\



That will add a new option on the preferences page so one can choose his/her own skin folder.
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: WigBaM on 2007-12-05 01:48:50
to really further develop this plugin, there should be at least one person, who wants to script his own ui and can tell me, what he wants and how he wants to do it ..
i've also experimented with a more interactive way to customize the ui, if there's interest in that ..
another alternative would be to make it possible to load winamps modern skins, but i dont even know, if this can be done or how difficult this would be


I would give it a go, but could you post at least some basic documentation? I hope you appreciate it is a non-rewarding task to look throught existing config trying to figure out what's what..
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: bb10 on 2007-12-07 01:16:22
I would ...


kdx
Last Active     6th July 2007 - 10:12

Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: marcelush on 2008-07-06 07:03:15
please... someone... continue this work!!!
Title: Skinnable UI - foo_ui_gfx (alpha)
Post by: Studio 308 on 2008-10-23 02:21:16
I think this could be the end... Plugin is incompatible with new 0.9.6 Beta 1.