Added support for changing the theme in the general preferences pane. Also removed the restore app preferences method.
Added an initial version of the theme manager preference view and its controller.
Modified the theme preference pane to use table views.
Added the theme that is loaded into memory by the theme manager. This was added to improve support for custom themes and manipulating themes in the app.
Added a theme preview to the theme preference pane. Added the deallocation code for a theme.
Removed a memory leak in the PLThemeManager’s init method.
Made the PLThemeManager a subclass of PLDocumentManager and the PLTheme a PLDocument subclass that conforms to the PLDocumentSubclass protocols.

This was done in order to gain the following functionality in the PLThemeManager: opening multiple themes, tracking changes in themes, adding temporary themes and saving themes.
Added the collection view selection functionality in the PLThemePreferenceViewController.
Added the NSColor to hexadecimal conversion in the NSColor+hexToColor category.
Replaced the implementation of the hexadecimal to NSColor method described in the NSColor category.

This is an alternative solution that is significantly easier and takes full advantage of the standard C library’s scanf functionality. This avoids bitwise operators and implicit masking using casting. The previous implementation was potentially less portable, as bitwise operations are dependent on platform endianness. This approach is also more readable and it is clear that the formal for a hexadecimal color involves 4 elements: a '#' symbol and three sets of 2 hex values that represents a single number.
Corrected an error with the sscanf function to parse hexadecimal strings. The ‘#’ symbol had previously been removed.
Reverted the hexcolor format in the NSColor category to include the pound key, as this is an accepted component of a hexadecimal color. This removes an extra step for the color conversion.
Implemented the methods for editing a theme, and editing the current theme causes a PLThemeManagerDidChange notification to be sent.
Made the PLTheme and PLThemeManager KVO compliant, which allows objects to observe changes to properties of the theme manager, such as foreground color, background color, etc.
Added bindings support to the PLTheme class. Whenever an edit is made, the PLTheme class informs its bindings that its properties have changed.
Added aNSView subclass that supports a background color. The background is also used in the theme preferences and is bound to the theme it represents.
The collection view in the preferences theme tab now highlights the selected theme. The theme preview has also been modified.
Made the PLTheme and PLThemeManager completely KVO compliant and very dynamic. Any property of the theme can be accesses through its path by using a key of the following form: Group/Property. Updated the theme preference pane to operate using these new bindings.
Will change to using the PLThemeGroupNavigators as proxies for subgroups.
Made the PLTheme and PLThemeManager bindings compatible by abstracting the plist dictionary. Bindings currently work by specifying the dictionary hierarchy using the ‘/‘ symbol.