p.s. I have finally implemented a horrendously ridiculous work around in order to send keyboard events to the visualizer. with that said those of you with keyboard access can use it just as you would in itunes to trigger visualizer events such as splitting the blob from 'styx' into 2 blobs etc. I hope I will be able rig up way for me to display the virtual keyboard over the visualizer so that others can take advantage of this.
Here are a couple of additional refinements that will make it into the 1.1 final build.
As many of you are aware 1.1 will contain the beginnings of an actual engine for skinning and theming application elements. Previously the theming ability of NBB was limited to hue adjustment controlled by the application controller. Already I have enhanced the theming to handle 3 additional adjustments, handle presets, and dictate font and font color.
the next step will be to upgrade the way in which themes are applied. In the beginning all theme-able controls simply listened for a global notification that told them to update their theme. it was up to the individual instances to ask for the needed information and then apply it to themselves. In 1.0 I improved it so that the window controller was responsible for notifying its windows contents, but would only do so just before its window was displayed and only if it was needed.
now in 1.1 there are 2 more major enhancements to how controls will update. first the theme controller will cache images for controls and invalidate and update the cache when the theme changes. this means that it is no longer necessary for each individual slider to apply the same theme adjustments (an expensive process) that the last identical control just made.
second major change will be that the responsibility for the actual theming is no longer the responsibility of the control class and instead all the control class has to do is fetch its updated image from the skin controller before drawing.
the bottom line for those non technical people is that the new theming engine will be much faster, use less memory, do more, and becomes much easier to add extensions to in the future. I will only need to extend the skin controller class instead of each individual control class.
Edit: please note that NSButton and its subclasses will not be cached due to the fact that most buttons have a unique image. In the next version of the theme controller I may add the ability for cacheing based on instance in addition to class; this would only be useful for buttons like the home and options button that are used multiple times throughout the app and its modules
a couple more additions that i am embarrassed I didn't think of before:
buttons for toggling shuffle and repeat have been added to the bar at the top of the "now playing" screen as well as the name of the current playlist if any.