Welcome to foo_uie_playlist_tree. This guide will help you understand how to use the component effectively and get the most out of its features.
- Introduction
- Features
- Getting Started
- Context Menu
- Drag & Drop
- Configuring
- Troubleshooting
- FAQs
- Reference Material
- History
- Acknowledgements and Credits
- Support
foo_uie_playlist_tree is a foobar2000 component to organize playlists in a tree view.
It attempts to recreate the functionality of foo_plorg.
- foobar2000 v2.0 or later (Intel 32-bit/64-bit and ARM64EC version).
- Tested on Microsoft Windows 10 and later.
You can download the component from the foobar2000 Components repository or from the GitHub Releases page.
- Double-click
foo_uie_playlist_tree.fbk2-componentor importfoo_uie_playlist_tree.fbk2-componentusing the foobar2000 Preferences dialog. Select the File / Preferences / Components menu item, select the Components page and click the Install... button. - Follow the foobar2000 instructions.
Tip
To verify if the installation was successful open the foobar2000 Preferences using the File / Preferences / Components menu item and look for Playlist Tree in the Installed components list.
You can experiment with the component without modifying your layout by selecting Playlist Tree from the View menu.
- Supports the Default User Interface (DUI) and the Columns User Interface (CUI).
- Supports dark mode.
- Supports foobar2000 2.0 and later (Intel 32-bit/64-bit and ARM64EC version).
- Custom Title Formatting fields
- Configurable tree node images
- Drag & drop from foobar2000, Explorer and other applications.
- Supports the foobar2000 playlist recycle bin.
- Supports foobar2000 playlist locks.
The first time the component opens it loads all the playlists that are currently open and adds them to the root of the tree.
The idea is to create a tree structure using folders to group your playlists any way you see fit.
Navigate the tree just like you would any other Windows tree view.
Note
Hold the Ctrl key when you click the chevron of a folder to collapse or expand the complete branch.
At the bottom of the panel there's a Quick Search text box. Typing the name of a folder or playlist will highlight its node in the tree. The text box has an Auto Complete feature that contains all the nodes names of the tree.
Note
Press the Escape key to close the drop down.
Right-click on the component window to display the context menu. The following items are available:
Creates a new folder or playlist item.
By default the new item gets created as a child of a folder item or below a playlist item over which the mouse pointer hovers.
If no item is highlighted the new item gets created at the bottom of the tree.
Note
You can specify an icon image to recognize a folder or a playlist.
Allows you to rename the highlighted item. You can not rename a playlist that is locked for renaming. The menu item will be disabled.
Allows you to remove the highlighted item. You can not remove a playlist that is locked for removal. The menu item will be disabled.
A folder that contains at least one playlist that is locked for removal can not be removed.
Note
Removing a folder also removes all the items it contains. A click with the middle mouse button will also remove the highlighed item.
Sometimes you don't want the collapsed or expanded state of a folder to change. The Frozenmenu item is enabled only for a folder and allows you to freeze the current state of a folder.
Note
You can specify an icon image to recognize a frozen folder.
Sorts the contents of the highlighed folder or the siblings of the selected playlist.
Opens the foobar2000 preferences dialog with the component page selected.
Saves the playlist the mouse pointer is hovering over.
Saves all the playlists.
Loads a playlist.
This menu item allows you to call up a dialog to edit an autoplaylist.
Note
This menu item only appears when the highlighted playlist is an autoplaylist. You can specify an icon image to recognize autoplaylists.
Allows you to restore a playlist that has been removed during the current session from the foobar2000 playlist recycle bin.
Note
This submenu only appears when one ore more playlists were removed.
The Clear history menu item empties the playlist recycle bin.
The Lock submenu allows you to lock a playlist or inspect an existing lock from another component.
Note
This submenu only appears when the highlighted playlist is locked. You can specify an icon image to recognize a locked folder or playlist.
The name of the component that locked the playlist is displayed at the bottom of the submenu. If another component has applied the lock the menu items will be disabled. You'll have to use the lock owner component to modify the locks.
Prevents items from being added to the playlist when enabled.
Prevents items from being removed from the playlist when enabled.
Prevents items from being reordered in the playlist when enabled.
Prevents items from being replaced in the playlist when enabled.
Prevents the playlist from being renamed when enabled.
Prevents the playlist from being removed when enabled.
Prevents the playlist from executing its default item action (usually starting playback) when enabled.
Enables all restrictions.
Disables all restrictions.
The Playlist menu allows you to access the menu items that would appear in a normal playlist context menu.
Note
This submenu only appears when the highlighted item is a playlist.
You can reorder the items of the tree using drag and drop.
When dropping a folder or playlist node think about how the drop target is divided into three zones:
- A top zone that occupies the top quarter of a node
- A bottom zone that occupies the bottom quarter of a node
- A center zone that is double as high as the top or the bottom zone.
Drop an item (folder or playlist) on the center zone of a folder to add it to that folder. Dropping an item on a playlist is ignored.
Drop an item (folder or playlist) on the top zone of an item to insert it before that item.
Drop an item (folder or playlist) on the bottom zone of an item to insert it after that item.
You can drag items from any playlist or from the media library.
When you drop one or more tracks on a playlist item the tracks get added to the playlist unless the playlist has been locked for modification.
Drop one or more tracks on a folder item or anywhere on the panel and a new playlist gets created with the dragged tracks.
You can drag items from Windows Explorer or other applications that process foobar2000 supported files on the tree.
A preferences page is used to change all parameters used by the component. You can find it by selecting the File / Preferences menu item and then selecting Display / Playlist Tree in the dialog.
You can configure the colors and fonts on the Colors and Fonts page for DUI (Default User Interface) or CUI (Columns User Interface),
Apply
Applies the configuration to the component.
OK
Closes the dialog box and preserves the changes to the configuration during the current session.
Note
The settings will only be saved to your profile when foobar2000 is closed.
Cancel
Closes the dialog box and undoes any changes to the configuration.
Where noted you can use the foobar2000 Title Formatting.
The component provides the following custom formatting fields:
| Name | Description |
|---|---|
| %node_name% | The name of the item, either a playlist or a folder. |
| %node_is_folder% | Boolean value for use in $if( ...) expressions and is true when the item is a folder. |
| %node_item_count% | The number of nodes in a folder or the number of items in a playlist. |
| %node_item_count_locale% | The number of nodes in a folder or the number of items in a playlist, formatted. |
| %node_is_locked% | Boolean value for use in $if( ...) expressions and is true when the item is locked. |
| %node_lock_name% | The name of the lock if the item is locked. |
| %playlist_duration% | The duration of the playlist (in seconds). |
| %playlist_duration_locale% | The duration of the playlist (in seconds), formatted. |
| %playlist_duration_natural% | The duration of the playlist in weeks, days, hours, minutes and seconds. |
| %playlist_size% | The size of the playlist (in bytes). |
| %playlist_size_locale% | The size of the playlist (in bytes), formatted. |
| %playlist_size_natural% | The size of the playlist in TB, GB, MB, KB or bytes. |
| %fb2k_path% | The directory path of the foobar2000 installation. |
| %fb2k_component_path% | The directory path of the component. |
| %fb2k_profile_path% | The directory path of the foobar2000 profile. |
| Any Windows environment variable | For example %UserProfile% or %WinDir% (See Full List of Environment Variables) |
Note
%node_item_count_locale%, %playlist_duration_locale% and %playlist_size_locale% are formatted using your Windows Regional Number format settings.
This setting determines how the text of a tree node gets formatted using foobar2000 Title Formatting.
Here are some examples:
%node_name%$if(%node_is_folder%,,' ('%node_item_count_locale%')')
%node_name%$if(%node_is_folder%,,' ('%node_item_count_locale%') '%playlist_size_locale%' bytes')
Note
This setting supports foobar2000 Title Formatting.
This setting specifies foobar2000 Title Formatting for the tooltip displayed in the tree view.
The default is:
$if(%node_is_folder%,,$if(%playlist_size_natural%,%playlist_size_natural%$crlf()$if2(%playlist_duration_natural%,', N/A'),'N/A'))
Leave the text empty to disable the tooltips.
Note
This setting supports foobar2000 Title Formatting.
$crlf() is a foobar2000 function that inserts a line break in the text.
You can configure the image that is used for each node type.
This setting determines for which node type the image will be selected.
- Folder: A folder in the tree
- Folder (Locked): A folder in the tree that contains one or more playlists that are locked for removal.
- Playlist: A playlist in the tree
- Playlist (Playing): The playlist from which foobar2000 is playing audio. This can be different from the currently displayed playlist.
- Playlist (Locked): The playlist has one or more restrictions applied to it.
This setting specififies the size of the image in the tree view in pixels. The default is 16 for a 16x16 image. The valid range is 16 to 256 pixels.
This setting determines which file will be used to create node images. Many Windows executables (.exe) and libraries (.dll) contain icons. The component can extract those icons and create node images from them.
You can also use any image in a format supported by the Windows Imaging Component (WIC) such as ICO, PNG, GIF, TIFF, JPEG, WebP, etc...
Here are some examples:
imageres.dllDefaultshell32.dllfoobar2000.exe%fb2k_component_path%\SomeIconLibrary.icl
Note
This setting supports foobar2000 Title Formatting.
Select the image for the selected node type from this list.
Enable this setting to display the Quick Search text box at the bottom of the panel (Default: on).
Enable this setting to display the horizontal scrollbar in the tree view (Default: on).
🔧 Work in Progress
- Q: When I open a second instance of the component the tree structure becomes unstable.
- A: The current version of the component does not support multiple instances.
This chapter contains some reference material I consulted during the development of foo_uie_playlist_tree.
- Desktop App User Interface
- Windows User Experience Interaction Guidelines
- Windows Controls
- Control Library
- Resource-Definition Statements
- About Custom Draw
- Control Parts and States
- Visuals, Layout
- The Old New Thing
- Windows Icons
- Using Explorer's fancy drag/drop effects in your own programs, Raymond Chen, The Old New Thing, 2021-05-12
- Drag/drop effects: The little drop information box, Raymond Chen, The Old New Thing, 2021-05-13
The history of foo_uie_playlist_tree development is available in a separate document.
- Peter Pawlowski for the foobar2000 audio player.
- Niels Lohmann for JSON for Modern C++.
For further assistance:
🌐 Home page: https://github.com/stuerp/foo_uie_playlist_tree
🌐 Repository: https://github.com/stuerp/foo_uie_playlist_tree.git
🌐 Issue tracker: https://github.com/stuerp/foo_uie_playlist_tree/issues
🌐 Support: Hydrogen Audio foobar2000 forum


