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: foo_playlist_tree (Read 704954 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

foo_playlist_tree

foo_playlist_tree is a very customizable media library, with support for hierarchical playlists as well as dynamic playlists.  Dynamic playlists can be generated using the same syntax as foo_playlistgen_ex.  It can operate in its own window or as a column_ui panel.

More information and downloads are available at:

http://www.bazquux.com/wiki/Foobar2000:Playlist_Tree
There used to be a link to my website here.

foo_playlist_tree

Reply #1
Quote
If anyone wants to help make it better, have a go at it and send me back your updates, thanks.
Sorry, I had a look at it, and I don't even have enough time to create a complete list of all present problems. Just to name a few:
  • You are happily mixing ANSI and UTF-8 strings, which will lead to failure for non-English filenames/tags/...


  • Assuming the first seven characters of a URL are "file://" and discarding this prefix is a really bad idea. Same with discarding the subsong index.


  • "Collection" loading seriously needs more error checks. Have you tried feeding the loader an arbitrary file for test purposes?

Quote
The code is in a pre-beta stage really,
pre-alpha maybe? If I were you, I wouldn't have released it at this stage (even with massive console output enabled).
Quote
but you can see what I am trying to do
Not really.
Quote
and I dont think it will take much effort to make this pretty useful.
I beg to differ, see above.

foo_playlist_tree

Reply #2
I had not intended that the release I made be for general consumption and I should have been more clear in the original post.  The post was made to show something that I am working on and to see if there was anybody who was interested in it, especially developer's who might have more experience in writing foobar2000 extension who might want to help me develop it. 

I had originally posted in the development section so that it would reach its target audience of other developer's, but the category was changed to the 3rd party plugins.

If  it is not clear what I am trying to do, check out the way the beta version of MacAmp for Windows deals with playlists or the program Advanced MP3 Manager.

MacAmp For Windows:
http://www.macamp.com/win

Advanced MP3 Manager: http://www.topshareware.com/Advanced-MP3-M...wnload-3839.htm
There used to be a link to my website here.

foo_playlist_tree

Reply #3
I would be very interested by such a plugin (once it is stabilised and integrated with ui_columns and the tabbed panels).

Have a look at j River Media Center, which has this capability IIRC.

foo_playlist_tree

Reply #4
Quote
Have a look at j River Media Center, which has this capability IIRC.
[a href="index.php?act=findpost&pid=254244"][{POST_SNAPBACK}][/a]

That link takes me to a Microsoft site for some reason. :S

foo_playlist_tree

Reply #5
duplicate "http://" in the url. I just fixed it.
A riddle is a short sword attached to the next 2000 years.

foo_playlist_tree

Reply #6
Quote
duplicate "http://" in the url. I just fixed it.
[a href="index.php?act=findpost&pid=254252"][{POST_SNAPBACK}][/a]

That's not it, because I pasted the url without the additional http and got the same result. Firefox initially goes to a page called "untitled," then ends up at Microsoft.

edit: yet the link works fine.  On topic - jRiver seems to have a nice interface, but I'm only judging by screenshots.

foo_playlist_tree

Reply #7
Quote
I'm working on a new extension that allows multi level hierarchical playlists
[...]
So I decided to write my own as an extension to foobar2k...

Thanks cwbowron. I would like to see your extension implemented

I'm not a developper, just a possible end-user. I've downloaded your extension, but I don't see a difference between your plugin and the regular Album list.

It's this what you're trying to achieve?
http://www.macamp.com/win/features/playlist.html

It looks great and I would love to see somethign like this implemented as a panel for Column UI. I mean, it looks like the Album list panel but with columns for values like lenght, rating, genre, etc... It'll be a cool Media Library.

Cheers.

BTW, you need msvcrtd.dll to make it work.

foo_playlist_tree

Reply #8
I think he actually wants to make a new playlist, not a media library or db view. So that you will actually play the track "inside" this component. Something similar to the screenshot you posted, or as the player discussed here: Deliplayer 2 vs. Foobar

foo_playlist_tree

Reply #9
I've updated my program and made it availabe at the original location http://www.bowron.us/foo_playlist_tree.zip

What I am envisioning is more of a playlist manager than anything.  It allows you to build nested playlists.  You can then send any level of the tree to the active playlist.

I still havent implemented local drag and drop, but you can drag and drop files and directories from folders into the window and have them added to any level of the tree.

It's still needs to be made more robust, but this might give everyone a better idea where I am heading...
There used to be a link to my website here.

foo_playlist_tree

Reply #10
Quote
...

It's still needs to be made more robust, but this might give everyone a better idea where I am heading...
[a href="index.php?act=findpost&pid=254571"][{POST_SNAPBACK}][/a]


Yes .... See Crash log below

Quote
.... but I don't see a difference between your plugin and the regular Album list.

[a href="index.php?act=findpost&pid=254289"][{POST_SNAPBACK}][/a]


So do I



Illegal operation:
Code: C0000005h, flags: 00000000h, address: 012B8560h
Access violation, operation: read, address: 00000034h
Call path:
WinMain=>app_mainloop
This is the first crash logged by this instance.
Code bytes (012B8560h):
012B8520h:  02 00 8B E5 5D C3 CC CC CC CC CC CC CC CC CC CC
012B8530h:  CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC
012B8540h:  55 8B EC 83 EC 44 53 56 57 51 8D 7D BC B9 11 00
012B8550h:  00 00 B8 CC CC CC CC F3 AB 59 89 4D FC 8B 45 FC
012B8560h:  8B 40 08 5F 5E 5B 8B E5 5D C3 CC CC CC CC CC CC
012B8570h:  CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC
012B8580h:  55 8B EC 83 EC 44 53 56 57 51 8D 7D BC B9 11 00
012B8590h:  00 00 B8 CC CC CC CC F3 AB 59 89 4D FC 8B 4D FC
Stack (0012F704h):
0012F6E4h:  78461F55 78462528 FFFFFFFF 00E2D4AC
0012F6F4h:  77E9F6C9 00070000 00000000 03E53DA0
0012F704h:  0012F7AC 0012F9AC 004F8E18 CCCCCCCC
0012F714h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F724h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F734h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F744h:  CCCCCCCC CCCCCCCC CCCCCCCC 0000002C
0012F754h:  0012F7AC 012BFB85 0012F804 0012F9AC
0012F764h:  004F8E18 CCCCCCCC CCCCCCCC CCCCCCCC
0012F774h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F784h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F794h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F7A4h:  CCCCCCCC 0000002C 0012F804 012B81D5
0012F7B4h:  0012F884 0012F9AC 004F8E18 CCCCCCCC
0012F7C4h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F7D4h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F7E4h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F7F4h:  CCCCCCCC CCCCCCCC CCCCCCCC 0000002C
0012F804h:  0012F890 012BF9EA 0012F8EC 0012F9AC
0012F814h:  004F8E18 CCCCCCCC CCCCCCCC CCCCCCCC
Registers:
EAX: 0000002C, EBX: 004F8E18, ECX: 0000002C, EDX: 01305984
ESI: 0012F9AC, EDI: 0012F754, EBP: 0012F754, ESP: 0012F704
Crash location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h

Loaded modules:
foobar2000                      loaded at 00400000h - 00452000h
ntdll                            loaded at 78460000h - 784E3000h
KERNEL32                        loaded at 77E70000h - 77F2E000h
USER32                          loaded at 77E00000h - 77E65000h
GDI32                            loaded at 77F40000h - 77F7B000h
ole32                            loaded at 77A40000h - 77B2F000h
RPCRT4                          loaded at 770C0000h - 77131000h
ADVAPI32                        loaded at 78ED0000h - 78F32000h
COMCTL32                        loaded at 77B40000h - 77BC9000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                        loaded at 76B00000h - 76B3E000h
SHLWAPI                          loaded at 77C60000h - 77CA9000h
SHELL32                          loaded at 77580000h - 777CC000h
MSVCRT                          loaded at 78000000h - 78045000h
foo_ac3                          loaded at 00800000h - 00813000h
foo_albumlist                    loaded at 00820000h - 0082B000h
foo_burninate                    loaded at 00830000h - 0083C000h
VERSION                          loaded at 77810000h - 77817000h
LZ32                            loaded at 75950000h - 75956000h
foo_cdda                        loaded at 00840000h - 0084E000h
foo_clienc                      loaded at 00850000h - 0085B000h
foo_console                      loaded at 00860000h - 00867000h
foo_dbsearch                    loaded at 00870000h - 00888000h
foo_diskwriter                  loaded at 00890000h - 008A2000h
WINMM                            loaded at 77540000h - 77571000h
foo_dsp_extra                    loaded at 00930000h - 00945000h
foo_dsp_nogaps                  loaded at 00950000h - 00957000h
foo_dynamics                    loaded at 00960000h - 00967000h
foo_faac                        loaded at 00970000h - 009A3000h
foo_flac                        loaded at 009B0000h - 009CC000h
foo_flaccer                      loaded at 009D0000h - 009E6000h
foo_freedb                      loaded at 009F0000h - 00A1E000h
WS2_32                          loaded at 74FB0000h - 74FC4000h
WS2HELP                          loaded at 74FA0000h - 74FA8000h
foo_id3v2                        loaded at 00A20000h - 00A50000h
MSVCP60                          loaded at 780C0000h - 78121000h
foo_infobox                      loaded at 00A50000h - 00A63000h
foo_input_std                    loaded at 00A70000h - 00B0E000h
MSACM32                          loaded at 773E0000h - 773F3000h
foo_masstag                      loaded at 00B10000h - 00B24000h
foo_null                        loaded at 00B30000h - 00B37000h
foo_output_std                  loaded at 00B40000h - 00B49000h
foo_out_dsound_ex                loaded at 00B50000h - 00B59000h
DSOUND                          loaded at 51080000h - 510DD000h
foo_out_ks                      loaded at 00B70000h - 00B7B000h
SETUPAPI                        loaded at 783C0000h - 78451000h
USERENV                          loaded at 78D20000h - 78D82000h
foo_playlistgen_ex              loaded at 00B80000h - 00B8F000h
foo_rgscan                      loaded at 00B90000h - 00B9D000h
foo_scroll                      loaded at 00BA0000h - 00BA6000h
foo_ui_std                      loaded at 00BB0000h - 00BC7000h
foo_utils                        loaded at 00BD0000h - 00BE1000h
foo_vis_manager                  loaded at 00BF0000h - 00BF8000h
foo_vorbisenc                    loaded at 00C00000h - 00D11000h
foo_wma                          loaded at 00D20000h - 00D3A000h
WMVCore                          loaded at 08530000h - 0872D000h
WMASF                            loaded at 07260000h - 07299000h
OLEAUT32                        loaded at 779A0000h - 77A3B000h
foo_history                      loaded at 01150000h - 01165000h
foo_history_panel                loaded at 01270000h - 01278000h
foo_openwith                    loaded at 01280000h - 01289000h
MSVCR71                          loaded at 7C340000h - 7C396000h
foo_osd                          loaded at 012A0000h - 012AB000h
foo_playlist_tree                loaded at 012B0000h - 0130B000h
MSVCRTD                          loaded at 10200000h - 10264000h
foo_pod                          loaded at 01320000h - 01382000h
foo_podclienc                    loaded at 01390000h - 0139E000h
foo_podtranscoder                loaded at 013A0000h - 013AB000h
foo_read_http                    loaded at 013B0000h - 013C3000h
foo_scheduler                    loaded at 013D0000h - 013E4000h
foo_shuffle                      loaded at 013F0000h - 013FA000h
foo_temple                      loaded at 01400000h - 0140B000h
foo_uie_albumart                loaded at 01410000h - 0141B000h
MSVCP71                          loaded at 7C3A0000h - 7C41B000h
foo_uie_albumlist                loaded at 01420000h - 0142E000h
foo_uie_tabs                    loaded at 01430000h - 0143A000h
foo_uie_trackinfo                loaded at 01440000h - 0144B000h
foo_uie_volume                  loaded at 01450000h - 0145A000h
foo_ui_columns                  loaded at 01460000h - 01496000h
foo_web                          loaded at 014A0000h - 014B8000h
foo_write_http                  loaded at 014C0000h - 014DA000h
wdmaud                          loaded at 77530000h - 77538000h
CLBCATQ                          loaded at 72C60000h - 72CF0000h
Powrprof                        loaded at 76690000h - 76697000h
SSSensor                        loaded at 06270000h - 06285000h
imagehlp                        loaded at 77910000h - 77933000h
DBGHELP                          loaded at 72970000h - 7299D000h

Stack dump analysis:
Address: 012BFB85h, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 012B81D5h, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 012BF9EAh, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 012E1A39h, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 012BD239h, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 012BB9FCh, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 012BB9A4h, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 012BAAEBh, location: "foo_playlist_tree", loaded at 012B0000h - 0130B000h
Address: 00BC0150h, location: "foo_ui_std", loaded at 00BB0000h - 00BC7000h

Version info:
foobar2000 v0.8.3
UNICODE

foo_playlist_tree

Reply #11
Quote
...
It's still needs to be made more robust, but this might give everyone a better idea where I am heading...
[a href="index.php?act=findpost&pid=254571"][{POST_SNAPBACK}][/a]

I'm getting this message:
Code: [Select]
ERROR (CORE) : Failed to load DLL: foo_playlist_tree.dll, reason: Unable to load DLL.

WIn XP, foobar0.8.3.

Quote
.... but I don't see a difference between your plugin and the regular Album list.
[a href="index.php?act=findpost&pid=254289"][{POST_SNAPBACK}][/a]

Quote
So do I

As the author said it's a pre-alpha buggy release, use it at your own risk.

Anyway, I still don't see the difference between playlist_tree and regular album list in terms of practical use, I'm sure I'm missing something so I'll wait to see if I can get it working 

foo_playlist_tree

Reply #12
Ok, so i figured out today why no one could see differences between this and albumlist...

I didnt have my database enabled and when i did all the files showed up like they would in album list.

I've fixed that and allowed for local drag and drop operations, and rearrangement of items in the tree ( to move an item up use '[' and ']' for down)

I dont want a program that displays all my albums in a hierarchical structure like album list does.. I want to be able to build playlist off various levels that I control what is in them.

when you run the program you should see a blank tree which you can add items and folders to and arrange however you like.  You can then send any level of the tree to the active playlist. 

It's still unstable but it works for me.

Here's an example of how I use this.

I have a playlist called country, that has most of my country music in it.  But I often like to listen to a mix of my favorites which are Johnny Cash, Willie Nelson, Waylon Jennings and Kris Kristofferson. 

so I have a tree like this

+ Country
+-----+  Highwaymen
|        +----+ Johnny Cash
|        |      + Best Of
|        |      + American IV - Man Comes Around
|        +----+ Willie Nelson
|        +----+ Kris Kristofferson
|        +----+  Waylon Jennings
+-----+ Left Frizzell
+------+ J Random Country Singer


Then, I can play the whole country list or, i can listen to all of the highwaymen or I could select any particular singer or any parcicular album by a singer
There used to be a link to my website here.

foo_playlist_tree

Reply #13
Looks like it needs a certain MSVCRTD.dll, is this right?

foo_playlist_tree

Reply #14
I updated the zip file to include the missing dll.
There used to be a link to my website here.

foo_playlist_tree

Reply #15
I've updated the file at http://www.bowron.us/foo_playlist_tree.zip.  It also includes the required dll that people were having problems with not having.

I've added support for dragging and dropping playlists, collections and windows shortcut files.  Most of the features I wanted to put into the extension are now there. 

I have not done extensive testing, but its working for me.

If you try it, and it crashes, please let me know what was happening when it crashed and I will try to fix bugs.

Thanks.
There used to be a link to my website here.

foo_playlist_tree

Reply #16
Hi,

I've finally understood what your plugin is about  It looks interesting, you can build your own folders, subcategories, etc...

Do you plan to make a panel for Column UI?

Anyway, while closing fb2k I get a cash:

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 012AD11Ch
Access violation, operation: read, address: 0000000Ch
Call path:
WinMain=>app_mainloop
This is the first crash logged by this instance.
Code bytes (012AD11Ch):
012AD0DCh:  52 FF 15 C8 15 2F 01 83 C4 08 3B F4 E8 2F A2 01
012AD0ECh:  00 89 85 98 EF FF FF 68 14 C2 2E 01 6A 01 E8 E1
012AD0FCh:  3F 00 00 83 C4 08 B9 90 09 2F 01 E8 30 3F FF FF
012AD10Ch:  C7 85 9C EF FF FF 90 09 2F 01 8B 85 98 EF FF FF
012AD11Ch:  8B 48 0C 83 E1 10 85 C9 0F 85 58 03 00 00 8B F4
012AD12Ch:  8B 95 98 EF FF FF 52 68 00 04 00 00 8D 85 A4 F3
012AD13Ch:  FF FF 50 FF 15 CC 15 2F 01 83 C4 0C 3B F4 E8 CD
012AD14Ch:  A1 01 00 8B F4 8B 8D 98 EF FF FF 51 68 00 04 00
Stack (0012DBD0h):
0012DBB0h:  00CFDCDC 7C9D76F0 77F443DD 7C9D76F0
0012DBC0h:  00000004 00000000 00CFD1E8 00000000
0012DBD0h:  0012FAE4 012AB770 00000000 CCCCCCCC
0012DBE0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DBF0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC00h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC10h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC20h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC30h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC40h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC50h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC60h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC70h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC80h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DC90h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DCA0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DCB0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DCC0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DCD0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012DCE0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
Registers:
EAX: 00000000, EBX: 00000000, ECX: 012F09A8, EDX: 012EBD70
ESI: 0012DBD0, EDI: 0012F8A8, EBP: 0012F8B4, ESP: 0012DBD0
Crash location: "foo_playlist_tree", loaded at 012A0000h - 012F6000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00452000h
ntdll                            loaded at 7C910000h - 7C9C6000h
kernel32                         loaded at 7C800000h - 7C901000h
USER32                           loaded at 77D10000h - 77DA0000h
GDI32                            loaded at 77EF0000h - 77F36000h
ole32                            loaded at 774B0000h - 775EC000h
msvcrt                           loaded at 77BE0000h - 77C38000h
ADVAPI32                         loaded at 77DA0000h - 77E4C000h
RPCRT4                           loaded at 77E50000h - 77EE1000h
COMCTL32                         loaded at 773A0000h - 774A2000h
SHLWAPI                          loaded at 77F40000h - 77FB6000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 76360000h - 763AA000h
SHELL32                          loaded at 7C9D0000h - 7D1EE000h
IMM32                            loaded at 76340000h - 7635D000h
LPK                              loaded at 62E30000h - 62E39000h
USP10                            loaded at 74D20000h - 74D8B000h
foo_abx                          loaded at 003F0000h - 003FA000h
foo_ac3                          loaded at 00A40000h - 00A53000h
foo_albumlist                    loaded at 00A60000h - 00A6B000h
foo_ape                          loaded at 00A70000h - 00A8F000h
foo_audioscrobbler               loaded at 00A90000h - 00AB0000h
LIBCURL                          loaded at 00AB0000h - 00AC9000h
WS2_32                           loaded at 71A30000h - 71A47000h
WS2HELP                          loaded at 71A20000h - 71A28000h
WINMM                            loaded at 76B00000h - 76B2E000h
foo_bookmark                     loaded at 00B60000h - 00B71000h
MFC42u                           loaded at 727B0000h - 728AE000h
MFC42LOC                         loaded at 61DF0000h - 61DFE000h
foo_burninate                    loaded at 00B80000h - 00B8C000h
VERSION                          loaded at 77BD0000h - 77BD8000h
foo_cdda                         loaded at 00B90000h - 00B9E000h
foo_clienc                       loaded at 00BA0000h - 00BAB000h
foo_console                      loaded at 00BB0000h - 00BB7000h
foo_custom_sort                  loaded at 00BC0000h - 00BC8000h
foo_dbexplorer                   loaded at 00BD0000h - 00BDD000h
foo_dbsearch                     loaded at 00BE0000h - 00BFA000h
foo_diskwriter                   loaded at 00C00000h - 00C12000h
foo_dsp_continuator              loaded at 00C20000h - 00C28000h
foo_dsp_crossfade                loaded at 00C30000h - 00C37000h
foo_dsp_extra                    loaded at 00C40000h - 00C55000h
foo_filedate                     loaded at 00C60000h - 00C69000h
foo_flac                         loaded at 00C70000h - 00C8C000h
foo_flaccer                      loaded at 00C90000h - 00CA6000h
foo_freedb                       loaded at 00CB0000h - 00CE2000h
foo_history                      loaded at 00CF0000h - 00D05000h
foo_id3v2                        loaded at 00D10000h - 00D40000h
MSVCP60                          loaded at 76030000h - 76095000h
foo_infobox                      loaded at 00D40000h - 00D53000h
foo_info_samurize                loaded at 00D60000h - 00D7A000h
foo_input_std                    loaded at 00EA0000h - 00F42000h
MSACM32                          loaded at 77BB0000h - 77BC5000h
uxtheme                          loaded at 5AD70000h - 5ADA8000h
foo_lame                         loaded at 00F50000h - 00F5C000h
foo_looks                        loaded at 00FA0000h - 0100D000h
gdiplus                          loaded at 4EBA0000h - 4ED43000h
foo_massdelete                   loaded at 01020000h - 0102A000h
foo_masstag                      loaded at 01030000h - 01044000h
foo_matroska                     loaded at 01050000h - 010AB000h
foo_midi                         loaded at 010C0000h - 0114E000h
MFC71                            loaded at 7C140000h - 7C243000h
MSVCR71                          loaded at 7C340000h - 7C396000h
MSVCP71                          loaded at 7C3A0000h - 7C41B000h
OLEAUT32                         loaded at 770F0000h - 7717C000h
foo_mod                          loaded at 01160000h - 01169000h
BASS                             loaded at 01170000h - 011CA000h
foo_mpcenc                       loaded at 011D0000h - 011DB000h
foo_nero                         loaded at 011E0000h - 011ED000h
MFC42                            loaded at 73D50000h - 73E4E000h
foo_output_asio(exe)             loaded at 011F0000h - 0121C000h
foo_output_std                   loaded at 01230000h - 01239000h
foo_out_dsound_ex                loaded at 01240000h - 01249000h
DSOUND                           loaded at 73E90000h - 73EEC000h
foo_out_ks                       loaded at 01260000h - 0126B000h
SETUPAPI                         loaded at 778F0000h - 779E7000h
foo_playcount                    loaded at 01270000h - 0127A000h
foo_playlistfind                 loaded at 01280000h - 0128B000h
foo_playlistgen_ex               loaded at 01290000h - 0129F000h
foo_playlist_tree                loaded at 012A0000h - 012F6000h
MSVCRTD                          loaded at 10200000h - 10264000h
foo_pod                          loaded at 01310000h - 0137B000h
foo_podclienc                    loaded at 01380000h - 0138E000h
foo_podtranscoder                loaded at 01390000h - 0139B000h
foo_qconfig                      loaded at 013A0000h - 013AC000h
foo_quicktag                     loaded at 013B0000h - 013B9000h
foo_read_http                    loaded at 013C0000h - 013D3000h
foo_record                       loaded at 013E0000h - 013EE000h
foo_remote                       loaded at 013F0000h - 013FB000h
foo_rgscan                       loaded at 01400000h - 0140D000h
foo_scheduler                    loaded at 01410000h - 01422000h
foo_scroll                       loaded at 01430000h - 01436000h
foo_send_to_pl                   loaded at 01440000h - 01449000h
foo_shuffle                      loaded at 01450000h - 0145B000h
foo_spc                          loaded at 01460000h - 01471000h
foo_speex                        loaded at 01480000h - 01498000h
foo_systemdate2                  loaded at 014A0000h - 014AB000h
foo_temple                       loaded at 014B0000h - 014BB000h
foo_uie_albumart                 loaded at 014C0000h - 014CB000h
foo_uie_albumlist                loaded at 014D0000h - 014DE000h
foo_uie_dbexplorer               loaded at 014E0000h - 014EA000h
foo_uie_simple_spectrum          loaded at 014F0000h - 014FB000h
foo_uie_tabs                     loaded at 01500000h - 0150A000h
foo_uie_trackinfo                loaded at 01510000h - 0151B000h
foo_uie_volume                   loaded at 01520000h - 0152B000h
foo_ui_columns                   loaded at 01530000h - 01566000h
foo_ui_std                       loaded at 01570000h - 01587000h
foo_unpack                       loaded at 01590000h - 015C1000h
foo_vis_bubbla                   loaded at 015D0000h - 015E4000h
OPENGL32                         loaded at 5F120000h - 5F1EC000h
GLU32                            loaded at 5FEA0000h - 5FEC1000h
DDRAW                            loaded at 736E0000h - 73729000h
DCIMAN32                         loaded at 73B40000h - 73B46000h
foo_vis_manager                  loaded at 035F0000h - 035F8000h
foo_vis_samurize2                loaded at 03600000h - 03627000h
foo_vis_simple_spectrum          loaded at 03750000h - 0375B000h
foo_vis_stereo                   loaded at 03760000h - 037E8000h
foo_vis_vu_meter                 loaded at 037F0000h - 037F8000h
foo_vorbisenc                    loaded at 03800000h - 038FA000h
foo_wavpack                      loaded at 03900000h - 03912000h
foo_web                          loaded at 03920000h - 03939000h
foo_wma                          loaded at 03940000h - 03959000h
WMVCore                          loaded at 7D7A0000h - 7D9AA000h
wmidx                            loaded at 4B380000h - 4B3A9000h
WMASF                            loaded at 59DE0000h - 59E1C000h
msdmo                            loaded at 73630000h - 73637000h
WININET                          loaded at 77180000h - 77227000h
CRYPT32                          loaded at 77A50000h - 77AE5000h
MSASN1                           loaded at 77AF0000h - 77B02000h
urlmon                           loaded at 77230000h - 772CE000h
MSVFW32                          loaded at 75ED0000h - 75EF1000h
WSOCK32                          loaded at 71A50000h - 71A5A000h
DRMClien                         loaded at 03960000h - 039AF000h
foo_tbar                         loaded at 039C0000h - 039C9000h
foo_text                         loaded at 039D0000h - 039E3000h
msctfime                         loaded at 75160000h - 7518E000h
CLBCATQ                          loaded at 76F90000h - 7700F000h
COMRes                           loaded at 77010000h - 770E0000h
msi                              loaded at 7D1F0000h - 7D4A2000h
USERENV                          loaded at 76630000h - 766E4000h
xpsp2res                         loaded at 20000000h - 202D6000h
SXS                              loaded at 76980000h - 76A31000h
Powrprof                         loaded at 74A60000h - 74A68000h
mswsock                          loaded at 719D0000h - 71A10000h
DNSAPI                           loaded at 76EE0000h - 76F07000h
winrnr                           loaded at 76F70000h - 76F78000h
WLDAP32                          loaded at 76F20000h - 76F4D000h
rasadhlp                         loaded at 76F80000h - 76F86000h
hnetcfg                          loaded at 66740000h - 66799000h
wshtcpip                         loaded at 71A10000h - 71A18000h
appHelp                          loaded at 77B10000h - 77B32000h
cscui                            loaded at 779F0000h - 77A45000h
CSCDLL                           loaded at 765B0000h - 765CD000h
browseui                         loaded at 75F30000h - 7602C000h
ntshrui                          loaded at 76950000h - 76976000h
ATL                              loaded at 76AE0000h - 76AF1000h
NETAPI32                         loaded at 597F0000h - 59844000h
shdocvw                          loaded at 77730000h - 7789C000h
CRYPTUI                          loaded at 76890000h - 76914000h
WINTRUST                         loaded at 76BF0000h - 76C1E000h
IMAGEHLP                         loaded at 76C50000h - 76C78000h
NTMARTA                          loaded at 77660000h - 77681000h
SAMLIB                           loaded at 71B90000h - 71BA3000h
DBGHELP                          loaded at 5D4B0000h - 5D551000h

Stack dump analysis:
Address: 012AB770h, location: "foo_playlist_tree", loaded at 012A0000h - 012F6000h

Version info:
foobar2000 v0.8.3
UNICODE


Screenshot of the debug message I get:
http://www.hydrogenaudio.org/forums/index....showtopic=29530

foo_playlist_tree

Reply #17
This might be going past the focus of this plugin, but here goes:

What if you took the idea of this plugin, but have it replace the actual playlist window? Files would play through in the same order as they do now, but everything would be displayed in heirarchial format. This way, I could drag an album from the albumlist and have it show up as a tree entry. What I'd change, however, is to make it exactly like the default playlist, just with indentations to represent tree levels. It would look something like this, with each line a entry on the playlist:

Code: [Select]
single track
single track 2
Artist1
  (2001) Album1
single track 3
  (2002) Album2 (elapsed/total)
      .01 song1 << (now playing)
      .02 song2


If I were to double click on album 2, then it would play all the songs within it. If you right-clicked on it there would be an option to open/close it along with all the other stuff.. basically this would be a way to keep the playlist nice and compact, so each of my albums that I have queued up only take one entry.

everything would be tagz configurable of course

foo_playlist_tree

Reply #18
i VERY MUCH like this component idea, expecially because it is (for the most part) drag and drop!

one use i have found already (after playing with it for maybe 2 minutes) is:

I have a lot of releases that are on an internet label called kahvi, not all of which i have listened to, but some of which i quite like.  so i can add a part of the tree called "kahvi" and add sub items for each release (most are 3-5 track releases)

this is quite easy with the drag and drop, but would be quite difficult with the album list panel, and would probably require making all sorts of tags that I didn't really need.

thanks a ton and keep up the good work... oh yea i second the idea for a panel UI extension... this would probably replace my album list config (which i so painstakingly created).

oh, and i will report any crashes or bugs i find.  thanks!

foo_playlist_tree

Reply #19
I'm glad some people are starting to understand what I am doing.

I've updated the program to allow for rearranging order using drag and drop.

The program now loads the last collection you saved or loaded when you start it up, and asks you to save if the collection has changed since the last load or save when you quit foobar2000.

I'm not averse to the idea of making it into a ui_extension, but the ui_extension api is giving me some issues... if anyone out there wants to help me do that, let me know...
There used to be a link to my website here.

foo_playlist_tree

Reply #20
ok i opened playlist tree, right clicked on the "ALL" category and got a crash (using the newest version)

here is the info:

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 015D8DA0h
Access violation, operation: read, address: CCCCCCECh
Call path:
WinMain=>app_mainloop
This is the first crash logged by this instance.
Code bytes (015D8DA0h):
015D8D60h:  01 00 8B E5 5D C3 CC CC CC CC CC CC CC CC CC CC
015D8D70h:  CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC
015D8D80h:  55 8B EC 83 EC 44 53 56 57 51 8D 7D BC B9 11 00
015D8D90h:  00 00 B8 CC CC CC CC F3 AB 59 89 4D FC 8B 45 FC
015D8DA0h:  8B 40 08 5F 5E 5B 8B E5 5D C3 CC CC CC CC CC CC
015D8DB0h:  CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC
015D8DC0h:  55 8B EC 83 EC 44 53 56 57 51 8D 7D BC B9 11 00
015D8DD0h:  00 00 B8 CC CC CC CC F3 AB 59 89 4D FC 8B 4D FC
Stack (0012F6B0h):
0012F690h:  00000040 F861588C BF803DD3 00000000
0012F6A0h:  F8615B34 0000003B 00000000 00C5FF28
0012F6B0h:  0012F758 0012F810 00000000 CCCCCCCC
0012F6C0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F6D0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F6E0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F6F0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCE4
0012F700h:  0012F758 015DF6E5 0012F7B0 0012F810
0012F710h:  00000000 CCCCCCCC CCCCCCCC CCCCCCCC
0012F720h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F730h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F740h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F750h:  CCCCCCCC CCCCCCE4 0012F7B0 015D8A65
0012F760h:  0012F808 0012F810 00000000 CCCCCCCC
0012F770h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F780h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F790h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
0012F7A0h:  CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCE4
0012F7B0h:  0012F808 015D4298 0012FA44 0012F810
0012F7C0h:  00000000 CCCCCCCC CCCCCCCC CCCCCCCC
Registers:
EAX: CCCCCCE4, EBX: 00000000, ECX: CCCCCCE4, EDX: 77C61AA0
ESI: 0012F810, EDI: 0012F700, EBP: 0012F700, ESP: 0012F6B0
Crash location: "foo_playlist_tree", loaded at 015D0000h - 01628000h

Loaded modules:
foobar2000                       loaded at 00400000h - 00452000h
ntdll                            loaded at 7C900000h - 7C9B0000h
kernel32                         loaded at 7C800000h - 7C8F4000h
USER32                           loaded at 77D40000h - 77DD0000h
GDI32                            loaded at 77F10000h - 77F56000h
ole32                            loaded at 774E0000h - 7761C000h
msvcrt                           loaded at 77C10000h - 77C68000h
ADVAPI32                         loaded at 77DD0000h - 77E6B000h
RPCRT4                           loaded at 77E70000h - 77F01000h
COMCTL32                         loaded at 773D0000h - 774D2000h
SHLWAPI                          loaded at 77F60000h - 77FD6000h
utf8api                          loaded at 10000000h - 1000D000h
comdlg32                         loaded at 763B0000h - 763F9000h
SHELL32                          loaded at 7C9C0000h - 7D1D4000h
IMM32                            loaded at 76390000h - 763AD000h
LPK                              loaded at 629C0000h - 629C9000h
USP10                            loaded at 74D90000h - 74DFB000h
foo_abx                          loaded at 009E0000h - 009EC000h
foo_ac3                          loaded at 009F0000h - 00A03000h
foo_albumlist                    loaded at 00A10000h - 00A1B000h
foo_ape                          loaded at 00A20000h - 00A3F000h
foo_apl                          loaded at 00A40000h - 00A4A000h
foo_bitcompare                   loaded at 00A50000h - 00A59000h
foo_burninate                    loaded at 00A60000h - 00A6C000h
VERSION                          loaded at 77C00000h - 77C08000h
foo_cdda                         loaded at 00A70000h - 00A7E000h
foo_clienc                       loaded at 00A80000h - 00A8B000h
foo_console                      loaded at 00A90000h - 00A97000h
foo_convolve                     loaded at 00AA0000h - 00AEF000h
foo_cue_ex                       loaded at 00AF0000h - 00AFB000h
foo_custom_sort                  loaded at 00B00000h - 00B08000h
foo_dbsearch                     loaded at 00B10000h - 00B28000h
foo_diskwriter                   loaded at 00B30000h - 00B42000h
WINMM                            loaded at 76B40000h - 76B6D000h
foo_dsp_crossfade                loaded at 00BD0000h - 00BD7000h
foo_dsp_crossfeed                loaded at 00BE0000h - 00BE6000h
foo_dsp_extra                    loaded at 00BF0000h - 00C05000h
foo_dsp_mute                     loaded at 00C10000h - 00C17000h
foo_dsp_nogaps                   loaded at 00C20000h - 00C27000h
foo_dsp_pause                    loaded at 00C30000h - 00C37000h
foo_dsp_skip_silence             loaded at 00C40000h - 00C47000h
foo_dsp_soundtouch               loaded at 00C50000h - 00C5B000h
MSVCP60                          loaded at 76080000h - 760E5000h
foo_dynamics                     loaded at 00C60000h - 00C67000h
foo_faac                         loaded at 00C70000h - 00CA3000h
foo_festalon                     loaded at 00CB0000h - 00DEE000h
foo_flac                         loaded at 00DF0000h - 00E0C000h
foo_flaccer                      loaded at 00E10000h - 00E26000h
foo_freedb                       loaded at 00E30000h - 00E5E000h
WS2_32                           loaded at 71AB0000h - 71AC7000h
WS2HELP                          loaded at 71AA0000h - 71AA8000h
foo_history                      loaded at 00E60000h - 00E72000h
foo_id3v2                        loaded at 00E80000h - 00EB0000h
foo_infobox                      loaded at 00EB0000h - 00EC3000h
foo_input_std                    loaded at 00ED0000h - 00F6E000h
MSACM32                          loaded at 77BE0000h - 77BF5000h
foo_lame                         loaded at 00F70000h - 00F79000h
foo_lpac                         loaded at 00F80000h - 00F87000h
lpac_codec_api                   loaded at 00F90000h - 00F9A000h
lpaccodec                        loaded at 00FA0000h - 00FC9000h
foo_masstag                      loaded at 011F0000h - 01204000h
foo_matroska                     loaded at 01210000h - 01258000h
foo_midi                         loaded at 01260000h - 012EF000h
MFC42                            loaded at 73DD0000h - 73ECE000h
OLEAUT32                         loaded at 77120000h - 771AC000h
foo_mod                          loaded at 012F0000h - 012F9000h
BASS                             loaded at 01300000h - 0135A000h
foo_monkey                       loaded at 01360000h - 0137C000h
foo_mpeg4u                       loaded at 01380000h - 013A9000h
foo_nez                          loaded at 013B0000h - 013DB000h
foo_null                         loaded at 013E0000h - 013E7000h
foo_ofr                          loaded at 013F0000h - 013F6000h
OptimFROG                        loaded at 01400000h - 0142C000h
foo_oggpreview                   loaded at 01440000h - 01541000h
foo_osd                          loaded at 01550000h - 0155C000h
foo_output_std                   loaded at 01560000h - 01569000h
foo_out_dsound_ex                loaded at 01570000h - 01579000h
DSOUND                           loaded at 73F10000h - 73F6C000h
foo_out_dsound_ex2               loaded at 01590000h - 01599000h
foo_out_ks                       loaded at 015A0000h - 015AB000h
SETUPAPI                         loaded at 77920000h - 77A13000h
foo_playlistfind                 loaded at 015B0000h - 015BB000h
foo_playlistgen_ex               loaded at 015C0000h - 015CF000h
foo_playlist_tree                loaded at 015D0000h - 01628000h
MSVCRTD                          loaded at 10200000h - 10264000h
foo_pphsresample                 loaded at 01640000h - 01650000h
foo_psf                          loaded at 01650000h - 016FC000h
foo_quicktag                     loaded at 01700000h - 01709000h
foo_read_http                    loaded at 01710000h - 01719000h
foo_recycle                      loaded at 01720000h - 01729000h
MSVCR71                          loaded at 7C340000h - 7C396000h
foo_rgscan                       loaded at 01740000h - 0174D000h
foo_scroll                       loaded at 01750000h - 01756000h
foo_search_ex                    loaded at 01760000h - 01768000h
foo_shn                          loaded at 01770000h - 0177F000h
foo_shuffle                      loaded at 01780000h - 01789000h
foo_sid                          loaded at 017D0000h - 01817000h
foo_spc                          loaded at 01790000h - 017A1000h
foo_speex                        loaded at 01820000h - 01838000h
foo_temple                       loaded at 017B0000h - 017BB000h
foo_tfmx                         loaded at 01840000h - 01849000h
foo_tta                          loaded at 01850000h - 01859000h
foo_tta_old                      loaded at 01860000h - 01869000h
foo_uie_albumart                 loaded at 01870000h - 0187B000h
MSVCP71                          loaded at 7C3A0000h - 7C41B000h
foo_uie_albumlist                loaded at 01880000h - 0188E000h
foo_uie_ascii_buttons            loaded at 01890000h - 01896000h
foo_uie_tabs                     loaded at 018A0000h - 018AA000h
foo_uie_trackinfo                loaded at 018B0000h - 018BB000h
foo_uie_volume                   loaded at 018C0000h - 018CA000h
foo_ui_columns                   loaded at 018D0000h - 01906000h
foo_ui_std                       loaded at 01910000h - 01927000h
foo_unpack                       loaded at 01930000h - 01961000h
foo_utils                        loaded at 01970000h - 01981000h
foo_vis_bacon                    loaded at 01990000h - 019A7000h
foo_vis_manager                  loaded at 019B0000h - 019B8000h
foo_vis_simple_spectrum          loaded at 019C0000h - 019CA000h
foo_vis_vu_meter                 loaded at 019D0000h - 019D8000h
foo_vorbisenc                    loaded at 019E0000h - 01AF1000h
foo_wavpack                      loaded at 01B00000h - 01B12000h
foo_web                          loaded at 01B20000h - 01B39000h
foo_wma                          loaded at 01B40000h - 01B5A000h
WMVCore                          loaded at 7D790000h - 7D99A000h
wmidx                            loaded at 4B320000h - 4B349000h
WMASF                            loaded at 59A10000h - 59A4C000h
msdmo                            loaded at 736B0000h - 736B7000h
WININET                          loaded at 771B0000h - 77256000h
CRYPT32                          loaded at 77A80000h - 77B14000h
MSASN1                           loaded at 77B20000h - 77B32000h
urlmon                           loaded at 77260000h - 772FE000h
MSVFW32                          loaded at 75A70000h - 75A91000h
WSOCK32                          loaded at 71AD0000h - 71AD9000h
DRMClien                         loaded at 01B60000h - 01BAF000h
foo_xa                           loaded at 01BC0000h - 01BCF000h
msctfime                         loaded at 755C0000h - 755EE000h
asycfilt                         loaded at 708F0000h - 70903000h
UxTheme                          loaded at 5AD70000h - 5ADA8000h
winroll                          loaded at 023B0000h - 023B7000h
WINTRUST                         loaded at 76C30000h - 76C5E000h
IMAGEHLP                         loaded at 76C90000h - 76CB8000h
wdmaud                           loaded at 72D20000h - 72D29000h
msacm32                          loaded at 72D10000h - 72D18000h
midimap                          loaded at 77BD0000h - 77BD7000h
KsUser                           loaded at 73EE0000h - 73EE4000h
xpsp2res                         loaded at 20000000h - 202C5000h
DBGHELP                          loaded at 59A60000h - 59B01000h

Stack dump analysis:
Address: 015DF6E5h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 015D8A65h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 015D4298h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 015DBDF0h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 015DBB50h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 015FF0BCh, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 77D48709h, location: "USER32", loaded at 77D40000h - 77DD0000h
Symbol: "GetDC" (+00000072h)
Address: 015DBB50h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 015DBB50h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h
Address: 77D54CA6h, location: "USER32", loaded at 77D40000h - 77DD0000h
Symbol: "CreateIconFromResourceEx" (+000002C2h)
Address: 015DBB50h, location: "foo_playlist_tree", loaded at 015D0000h - 01628000h

Version info:
foobar2000 v0.8.3
UNICODE


edit: not reproducible (yet)

foo_playlist_tree

Reply #21
also, i tried to add 333 tracks to the tree and it seemed to freeze foobar... no error messages or anything, just stopped responding.  it was still playing tho... odd.

foo_playlist_tree

Reply #22
i think this "freezing" was it just taking its time to load the tracks.

couple other things tho:

would it be possible to have multi-select?

can you make it scroll while dragging items?

can yo umake it so every tree is not re-opened every time items or a new sub-tree is added?

is customizable track display in the future? (i.e. adding tracknumbers maybe?)

thats all the suggestions i have for now.

oh and it seems to have focus issues a lot (looses focus to main foobar window for some reason?)

foo_playlist_tree

Reply #23
Quote
i think this "freezing" was it just taking its time to load the tracks.
[a href="index.php?act=findpost&pid=255863"][{POST_SNAPBACK}][/a]


I added a progress bar to the window so you can now tell when things are happening... this should clear up the freezing issue...

Quote
would it be possible to have multi-select?

can you make it scroll while dragging items?
[a href="index.php?act=findpost&pid=255863"][{POST_SNAPBACK}][/a]


Multi select is not a bad idea, but it probably won't happen for a while... I'm not sure how do the the scrolling but if its not too hard I might do it...


Quote
is customizable track display in the future? (i.e. adding tracknumbers maybe?)

oh and it seems to have focus issues a lot (looses focus to main foobar window for some reason?)
[a href="index.php?act=findpost&pid=255863"][{POST_SNAPBACK}][/a]


Yes, the future is now.  I updated the program to allow customizing the track display information.

The focus issue I'm not sure of... I can make it so that the playlist tree always has focus when foobar2000 is active but that can be annoying so I'm not sure how to get around the losing focus issue.

I also added an option to automatically start playlist_tree when foobar2000 starts, and an option to load the previous tree or not.
There used to be a link to my website here.

foo_playlist_tree

Reply #24
Can you make it a panel?