Help - Search - Members - Calendar
Full Version: foo_browser
Hydrogenaudio Forums > Hosted Forums > foobar2000 > 3rd Party Plugins - (fb2k)
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
cwbowron
I broke off my playlist tree browser into its own component, and changed the way it works a bit. It now offers browsing in a similar fashion to iTunes. This should be considered a BETA release.

* foo_browser adds 5 panels you can add to your columns ui layout, one each for Genre, Artist, Album and Title. Additional panels can be created in the preferences menu
* By default, foo_browser shows the selection contents in its own playlist named "*Browser*"
* Adds "Browse" to context menu which will populate all the panels from your selections
* initially foo_browser will show entire library.

screenshot at http://foobar.bowron.us/foo_browser.png

More info: http://wiki.bowron.us/index.php/Foobar2000
Zurman
A future must-have, no doubt smile.gif

But... it doesn't work : Failed to load DLL: foo_browser.dll crying.gif
cwbowron
I'm thinking this could possibly be a dependency issue...

I believe it requires msvcrt.dll and msvcr80.dll.

EDIT: Removed dll links
fabiospark
Very, very interesting starting point.

I wonder how high it will be flying in a couple of months...
I think this will become a very popular tool.

As soon as you feel you can get feature requests about it, just let us know.


Zurman
Still doesn't work huh.gif
Where do I put them exactly ? unsure.gif
Zurman
QUOTE(fabiospark @ Mar 23 2006, 12:55 PM)
Very, very interesting starting point.

I wonder how high it will be flying in a couple of months...
I think this will become a very popular tool.

As soon as you feel you can get feature requests about it, just let us know.
*


Does it work ?
kingojb
Great component! All seems to be working mostly fine here so congrats on that.
Only comments I can make are that the ordering of items in the browsers seems to be random which makes selecting difficult, and how do you undo a browse context menu selection to go back to all?

A couple of ideas for aesthetics: adding an option to change the background colour would be great, and removing the foo_browser: part of the titles would make things look neater.
fabiospark
QUOTE(Zurman @ Mar 23 2006, 10:57 PM)
QUOTE(fabiospark @ Mar 23 2006, 12:55 PM)
Very, very interesting starting point.

I wonder how high it will be flying in a couple of months...
I think this will become a very popular tool.

As soon as you feel you can get feature requests about it, just let us know.
*


Does it work ?
*



Of course.

And I don't have any msvc... etc in my "C\:Programmi\foobar2000 09" directory.
I only have a msvcrt71 into my regular Foobar 0.8.3 dir, but I don't know if this matters.

I'm on XP SP1.
fabiospark
QUOTE(kingojb @ Mar 23 2006, 11:20 PM)
Great component! All seems to be working mostly fine here so congrats on that.
Only comments I can make are that the ordering of items in the browsers seems to be random which makes selecting difficult, and how do you undo a browse context menu selection to go back to all?

A couple of ideas for aesthetics: adding an option to change the background colour would be great, and removing the foo_browser: part of the titles would make things look neater.
*



Hey, let the guy work!

I think this was just a quickly put together thing to prove to himself that he can do it.
And only later he thought to let us know about it.

I agree it's quite a teaser...
NEMO7538
The concept is attracting, but the library is rescanned too frequently, making it unusable.
There is no manament of VA albums.
The sort order of the playlist is destroyed.
I would suggest (if feasible) to configure each panel with a tagz string.

Great idea anyway
kingojb
QUOTE

Hey, let the guy work!

I think this was just a quickly put together thing to prove to himself that he can do it.
And only later he thought to let us know about it.

I agree it's quite a teaser...
*


Yeah maybe I jumped the gun a bit there!

I worked out how to get browse back to all so no problem there. It'll be interesting to see how this progresses. keep up the good work!
aliumalik
All I can say is...Excellent Component! always wanted an itunes like browser for foobar


A couple of request though

1) Don't show horizontal scrollbars in panels
2) Add a 'refresh' option to the context menu so when tags are updated foobar does't have to be restarted to see the results in the panels
3) Make its own playlist for the displayed results like foo_ui_albumlist

Thanks
foosion
Some issues:
  • Setting WS_TABSTOP on the listview is pretty useless without setting WS_EX_CONTROLPARENT on the dialog itself, i.e. you cannot tab in and out of the panel without this.
  • It would be nice if one could see the selected item in each panel (set LVS_SHOWSELALWAYS on the listview).
  • Probably obvious, but for the sake of completeness: The lists should be sorted. smile.gif
  • The panel titles could do with a change. I'd replace the component filename in the panel titles with a friendlier name, like "Browser", or "Library Browser" or another one of your choice.
  • Please do not modify the contents of the current playlist without setting an undo point. Just call playlist_manager::playlist_undo_backup() before you modify the playlist.
  • An alternative would be to put the search results into a separate locked playlist (with a friendly lock name, i.e. not "foo_browser"). Setting undo points would not be required then, but blocking add and remove operations could be a good idea.
  • Resetting the browser to display all entries seems quite slow; it would be worth investigating why. pfc/profiler.h has some classes that could help with this.
  • Please, please, read up on Redistributing Visual C++ Files before recommending people to download random DLLs. Using static linking is an easy way to reduce the dependencies of your component, if your build environment allows this (I'm not sure if Visual C++ Express does).
musicmusic
QUOTE(cwbowron @ Mar 23 2006, 08:34 PM)

I hope whoever visits that page takes a good look at the comments. I'll quote the Microsoft representative who had to post there:
QUOTE
Hello everyone, My name's Martyn Lovell, and I'm the development lead of the team that produces msvcr80.dll [The Visual C++ Libraries team]. There are a couple of things I'd like to clarify. First, let me be clear that NOONE should download the file linked here, because it is a beta copy of the software and not compatible with the final version that has now been released. If you've already downloaded it, please delete it. [...]  Martyn Lovell Development Lead Visual C++ Libraries
Zurman
So why isn't it working here ? crying.gif
Protoss
Very nice man...Just one feature that is a must have, display the items in a set playlist.
Sorting, at least alphabetizing, would be good too. Great job though!
lav-chan
It's a fantastic start, and i bet it'll be one of the more popular components out there, but the things that foosion mentioned are big issues.

A problem that sticks out for me especially is the slowness that comes with resetting the display to all items.


Some basic issues (some of these have been mentioned already):

(1) As said before, resetting the display is slow in some situations.

(2) When the display is updating, the lists in the panels turn grey (as in, window-coloured, not list-coloured). It would look a lot nicer if they just stayed the normal list colour.

(3) There doesn't appear to be any easy way of updating the lists. If i have a genre x and a genre y, and i retag all the genre x files to be genre y, the entry for genre x remains in the list. If i try to click it, it actually causes my foobar to hang.

(4) And, of course, the sorting. Should be alphabetical by default, customisable would be great.


Aesthetic issues:

(1) There should be an option, at least, to disable the horizontal scroll bars. They look kinda gross.

(2) Having the column headers AND the captions is redundant. There should be an option to disable either or both of them (not just the captions).

(3) Colour/formatting/scripting options (like the ones in the album list component) would be nice.

(4) If possible, it would be nice to have an option to 'focus' the selected item in the list. I mean, i haven't used iTunes in a long time, but i think that when you select a genre in the list, the list moves down so that the item you selected is at the top of the list. Maybe some other way of showing what item you've selected (e.g., a right-aligned arrow next to the selected item).




It's a totally great start, though. It'll be a must-have with a little work.
4nt1
awesome looking potential
just wondering how i can configure it?
or is that too early for that?

this looks almost exactly like musikCube, winamp media library type functionality, which is awesome

i re arrange my music too often to worry about play lists
thats why this appealrs to me so much

keep up the good work i will be using/watching this closely
fabiospark
Mmmmmm..

On another PC (XP SP1 too) Foobar can't even load the dll.
What do you think should I check?

Thanks.
Guigui
Same for me : unable to load dll
XP SP2

but snapshots looks good tongue.gif
cwbowron
Thanks for the feedback, especially foosion and for his updated tutorial which made it easier for me to add the main menu items...

Just uploaded a new version... 1.0beta2...

Changelog:

QUOTE
Release 1.0beta 2

    * 2006-03-24
          o Show selection always
          o WS_EX_CONTROLPARENT
          o Moved Reset Browsers into main menu under library
          o Moved "foo_browser" back to "Browse"
          o Browsing playlist = "*Browser*"
          o Panels named "Browser [HEADER]"
          o sort
          o Added #Title Panel which has the title *AND* the track number
          o row_info now has a bit_array mask rather than a complete list of handles for each row
          o Turn off redraw when repopulating

    * 2006-03-23
          o Added "foo_browser/Reset Browsers" in context menu
          o Moved "Browse" to "foo_browser/Browse" in context menu


http://wiki.bowron.us/index.php/Foobar2000:Browser:Changelog
lav-chan
That's awesome, that fixes a lot of the major issues.


My foobar hangs if i right-click (in the 'Genre' browser) though. Does it do that for you?
aliumalik
QUOTE(lav-chan @ Mar 24 2006, 09:46 PM)
My foobar hangs if i right-click (in the 'Genre' browser) though. Does it do that for you?
*



I can confirm this 100% CPU usage
EDIT: Happens when right clicking any panel now :S

I cannot understand the function of the browse item in the context menu. If i right click and select browse it does the same thing if i would click on the artist/album/... name. And this might be a BUG: when you click browser and display one artist there is no way to go back to the whole library without restarting. It should sho all the artists again when I click all...shouldn't it

About the Playlist name...this is a minor thing but...I wish instead of naming it *Browser* it were named "Library' Seems kinda logical to me...maybe that can be implemented when user configurable options (fonts, background border etc) are added to the GUI.

Lastly, thanks for this wonderful plugin!!
cwbowron
QUOTE(aliumalik @ Mar 24 2006, 12:28 PM)
I can confirm this 100% CPU usage
EDIT: Happens when right clicking any panel now :S

I cannot understand the function of the browse item in the context menu. If i right click and select browse it does the same thing if i would click on the artist/album/... name. And this might be a BUG: when you click browser and display one artist there is no way to go back to the whole library without restarting. It should sho all the artists again when I click all...shouldn't it

About the Playlist name...this is a minor thing but...I wish instead of naming it *Browser* it were named "Library' Seems kinda logical to me...maybe that can be implemented when user configurable options (fonts, background border etc) are added to the GUI.

Lastly, thanks for this wonderful plugin!!
*



1 - The issue with the context menu is this: Each label in a browser can represent many, many files... especially in the Genre category... So when you right click an item, it has to create the list of all the files that the label represents so that the context menu can be created and called... The more items that the label represents, the longer that process is going to take...

2 - Selecting Browse from the context menu, replaces the contents of ALL browsers with only the tracks that were selected... If you select browse from the context menu, then go back into genre or artist and select "All" that All only represents all the items that were sent over to the browser from the browse command... If you want to go back to the full library, use the main menu option under Library... Usually what happens is that the higher level browsers repopulate the lower level ones when selections are made... So that click on a genre will ripple down through artist, album and title... Then if you select "All" in genre, everything will get populated from the entire contents of the Genre panel...

3 - I envision that I will be making some things configurable such as colors, fonts and browsing playlist name... Possibly even Panel headers and formats... I do not want it to get out of control like Playlist Tree got though, so I will be keeping things reasonable..
aliumalik
QUOTE
1 - The issue with the context menu is this: Each label in a browser can represent many, many files... especially in the Genre category... So when you right click an item, it has to create the list of all the files that the label represents so that the context menu can be created and called... The more items that the label represents, the longer that process is going to take...


maybe something like foo_albumlist could be done in that case...i am presuming right clicking 'all' option in both components returns the same context menu
Zurman
Great update, now it works here cool.gif

Keep up the good work
cwbowron
Oh, Snap... I made a stupid mistake in context menu...

will be fixed shortly...

EDIT: I updated the zip file to 1.0beta3 which removes some debugging output I inadvertantly left in context menu code
chiwou
nice component biggrin.gif
Question: How can I add the Browser Window on top?
aliumalik
QUOTE(cwbowron @ Mar 24 2006, 11:19 PM)
Oh, Snap... I made a stupid mistake in context menu...

will be fixed shortly...

EDIT: I updated the zip file to 1.0beta3 which removes some debugging output I inadvertantly left in context menu code

*


Excellent...working superbly now


BTW Can it be made so that right click an item doesn't display its contents in the playlist?

Thanks
lav-chan
QUOTE(chiwou @ Mar 24 2006, 10:21 AM)
nice component :D
Question: How can I add the Browser Window on top?
*

Use Columns UI's 'layout' configuration. Right-click whatever's there, add vertical splitter, right-click that, add whatever. Play with it, you'll figure it out.


edit:
Right-clicking is now much faster, it only takes maybe a second or two on the 'all' item in the Genre browser. Awesome job.
randal1013
great component, but a few suggestions:

custom sorting

custom display like album list panel
example: for the album panel, i'd like to see the date of the album as well as the title, and i'd like to be able to make a new panel altogether.

have an option to remove the caption. i know which list is the artists and which is the albums. the caption just wastes space.

option to remove the horizontoal scroll bar.

and tell it which playlist to go to. being able to use the %_view% like in album list panel would be the ideal option for me.


if those things were in place, this component would be perfect.
julien_32
some bugs

-when I choose a genre, album list is not sorted.

-*browser* playlist don't use "%path_sort%", or "Sort incomming files by" in preferences, and then there is a problem multi-artist album. I use ALBUM ARTIST and ARTIST.

-for a track with two or more genre/artist metadata, display like %<genre>% (and not %genre%) in albumlist.

excuse me for my english, and thanks for the plugin smile.gif
chiwou
thx lav-chan biggrin.gif these options are new for me biggrin.gif
fabiospark
Are you already thinking to let us:

1 - ... assign whichever tag to whichever panel?

2 - ... have an unlimited number of panels? (Or, at least, more than four.)

3 - ... have a sort of a master filter on top of the panels array? Say filtering with genre without wasting a panel.

4 - ... select more than one item in a panel? I know that that was a limit set by Windows listview control so, maybe, now that you are not using that any more... (I think)

4b - ... in that case, being able to choose the boolean operator to apply to the in-panel selection?

5 - ... save somewhere a particular panels layout and setting (with a custom name) and being able to retrieve it and quickly reload it at need, maybe choosing it from a list of presets (with its panel too) This list could also work as a sort of master panel (above the master filter mentioned above. The preset should store the master filter settings too.)
This could be seen like a PLT query node but with the panels as the different levels of its tree.

6 - ... choose the path the inter-panels filtering should follow. Now we have a static path: genre->artist->album->title. It would be useful to have the filtering follow the sequence of panels in Columns UI lay-out tab from top to bottom. Sometimes I'd like choosing a title and in the next panel see just the different performers that sings it. Or even more choosing "piano" (or, with the multi line selection "piano + bass + drums") and get only the tracks (but also the artists, the years etc) that match the previous panels filtering.

7 - ... of course, having the #tag# working in the panels too...


I could go on for another hour but I save something for later...

Thanks.
cwbowron
QUOTE(fabiospark @ Mar 24 2006, 03:21 PM)
4 - ... select more than one item in a panel? I know that that was a limit set by Windows listview control so, maybe, now that you are not using that any more... (I think)
*



Its the TreeView that does not allow multiple selections... ListView allows them, and the panels should support them... Hold down control to individually select items, or use shift to select a range...
fabiospark
It was too nice too be true... that's why I asked without trying before...

Sorry about that and thanks.



... now I'm dying to have "my" performer and instrument panels! (without a final "s", ambrogio, please).
MJT
Hot damn, this thing is cool. Can't wait for it to become more customizable.

Thanks cwbowron.
The Link
QUOTE(fabiospark @ Mar 24 2006, 09:21 PM)
Are you already thinking to let us:

1 - ...
2 - ...
3 - ...
4 - ...
4b - ...
5 - ...
6 - ...
7 - ...
I could go on for another hour but I save something for later...

Thanks.
*


Just my opinion: I would really prefer to see that this time the "feature explosion" will not happen. Keep it slim, think about every additional feature/option in the preferences as sth. evil and only implement it if there's no other way to fulfill the purpose of the plugin.

One other thing: If there are multiple tag values I wouldn't handle every combination as a separate entry but only list single elements (especially with genres).
fabiospark
QUOTE
Just my opinion: I would really prefer to see that this time the "feature explosion" will not happen.


I mentioned those points only because sometimes, cwbowron has showns us to take inspiration from our requests or hints.
And because I think that it's easier to change things at the beginning of a project, when you have less things already made, than when you are already deeply buried under lines of code...

As you can see, I started my post as a reminder, not as a feature request.

Just in case he hadn't thought some of the issues I mentioned.

lav-chan
What's wrong with feature explosions anyway. :/
NEMO7538
keep it simple please, so it's ressource efficient
skyhopper88
QUOTE(lav-chan @ Mar 24 2006, 12:35 PM)
QUOTE(chiwou @ Mar 24 2006, 10:21 AM)
nice component biggrin.gif
Question: How can I add the Browser Window on top?
*

Use Columns UI's 'layout' configuration. Right-click whatever's there, add vertical splitter, right-click that, add whatever. Play with it, you'll figure it out.


edit:
Right-clicking is now much faster, it only takes maybe a second or two on the 'all' item in the Genre browser. Awesome job.
*



For the life of me I can't mimic the screenshot (like Itunes). I managed to get the Browser windows lined up horizontally, but I cannot place the playlist view under them, only beside them horizontally. I've tryed every splitter combination I can think of but I'm just not figuring it out. Could someone show me exactly how to organize it in the layouts tab? I know it's something simple and I'll feel real stupid afterwards...
lav-chan
It should be something like this (this is just with the browser panels and play list, if you want more stuff you'll have to add it obviously):

CODE
VERTICAL SPLITTER
|
|---HORIZONTAL SPLITTER
|   |
|   |---BROWSER: GENRE
|   |
|   |---BROWSER: ARTIST
|   |
|   |---BROWSER: ALBUM
|   |
|   |---BROWSER: TITLE
|
|---PLAY LIST
metal_termite
Great plugin.

I have a suggestion to make it even more versatile. In addition to the browsers you have, add a user-configurable browser. The user can configure this browser to use any specified tag. Have the user enter as many tags as he wishes. Then in that configurable browser, you can right click and select which Tag you'd like to use.

Here is a mock-up of what I mean: Picture
Protoss
Hah..sweet it creates its own playlist..dude, this is awesome, keep up the great work.
lav-chan
Why not just make them all customisable? What kind of jerk is really gonna need seven browser panels?
metal_termite
QUOTE(lav-chan @ Mar 24 2006, 07:10 PM)
Why not just make them all customisable? What kind of jerk is really gonna need seven browser panels?
*


Haha. I saw the redundancy in that and was editing my post as you said that. Thanks for calling me a jerk smile.gif
lav-chan
I meant why not just make the four or whatever panels, and then make each of those four customisable. By default they would be %genre%, %artist%, %album%, %title%, but you could change them to anything you wanted.

<_<


edit:
Although i suppose the ability to add a bunch of tags to a list and then change it on the fly would be cool for people who don't want to have them all shown at once.
Killmaster
Good work so far. A few suggestions:

1.) I think the seperate panels could be eliminated altogether. I can't think of any real reason not to have them next to each other, and it's kind of a pain to have to add them all yourself. I don't know if the SDK has anything in there to detect whether a panel is vertical or horizonal, but if there is then this should be feasible.

2.) Maybe you could steal some code from the albumlist? The albumlist takes about 1.5 seconds to refresh, while your plugin takes a full 13 seconds (not to mention freezing foobar in the process) if I click on "all"

3.) If you go with #1, maybe you could make it configurable similar to the albumlist? What I mean by that is allow for people to make new views the same way you create them in the albumlist preferences. This would also allow for infinite panels and whatnot without cluttering up the columns_ui menus.

4.) In the meantime, could you at least modify the "artist" panel to use %album artist%? My VA albums are all spread around sad.gif

5.) The sorting on the artist panel is odd. It goes A-Z for some of them, then +/-, then a second set of artists A-Z. I can't find any real pattern for this; I thought maybe it had to do with album artist but I don't think so.
mazy
Killmaster, as for 1), i use only three panels, for example ... plus i think that cwbowron is going to add more panels in the future or make them fully configurable (as to which tag they use etc.)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.