[banshee: 9/12] Merge branch 'master' into platform-hyena



commit 70623b53a158c6f7d6355415dc46df6d9ea8d91d
Merge: 4e4dfed 3c5ae21
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Sat Jan 9 14:11:27 2010 -0800

    Merge branch 'master' into platform-hyena
    
    Conflicts:
    	src/Core/Banshee.Core/Banshee.Base/PlatformHacks.cs
    	src/Core/Banshee.Services/Banshee.Collection/FilterListModel.cs
    	src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs
    	src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs
    	src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs
    	src/Core/Banshee.Services/Banshee.Metadata/MetadataService.cs
    	src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinView.cs
    	src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs
    	src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
    	src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
    	src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
    	src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs
    	src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
    	src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs
    	src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceComboBox.cs
    	src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs
    	src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
    	src/Libraries/Hyena.Gui/Hyena.Gui/DragDropList.cs
    	src/Libraries/Hyena.Gui/Hyena.Widgets/HigMessageDialog.cs
    	src/Libraries/Hyena.Gui/Makefile.am
    	src/Libraries/Hyena/Hyena.Collections/LruCache.cs
    	src/Libraries/Hyena/Hyena/ThreadAssist.cs

 .gitattributes                                     |    1 +
 .gitignore                                         |    9 +-
 Banshee.sln                                        |  809 +-
 COPYING                                            |    3 +-
 HACKING                                            |   20 +-
 Makefile.am                                        |   14 +-
 NEWS                                               |  203 +-
 autogen.osx.sh                                     |    4 -
 autogen.sh                                         |    4 +-
 banshee.doap                                       |   15 +-
 bootstrap-bundle                                   |   60 +
 build/AddinXmlStringExtractor.cs                   |   47 +
 build/DllMapVerifier.cs                            |    5 +
 build/Makefile.am                                  |    9 +-
 build/build.environment.mk                         |    8 +-
 build/build.rules.mk                               |    6 +-
 build/bundle/bockbuild/darwinprofile.py            |   25 +
 build/bundle/bockbuild/environment.py              |   62 +
 build/bundle/bockbuild/package.py                  |  190 +
 build/bundle/bockbuild/profile.py                  |   88 +
 build/bundle/bockbuild/unixprofile.py              |   27 +
 build/bundle/bockbuild/util.py                     |   83 +
 build/bundle/mkbundle.osx                          |   53 +
 build/bundle/packages.py                           |   83 +
 build/bundle/packages/atk.py                       |    1 +
 build/bundle/packages/autoconf.py                  |    1 +
 build/bundle/packages/automake.py                  |    1 +
 build/bundle/packages/banshee.py                   |   32 +
 build/bundle/packages/cairo.py                     |   24 +
 build/bundle/packages/flac.py                      |   12 +
 build/bundle/packages/fontconfig.py                |    6 +
 build/bundle/packages/freetype.py                  |    3 +
 build/bundle/packages/gconf-dummy.py               |    9 +
 build/bundle/packages/gettext.py                   |    5 +
 build/bundle/packages/glib.py                      |   44 +
 build/bundle/packages/gst-plugins-bad.py           |    9 +
 build/bundle/packages/gst-plugins-base.py          |   22 +
 build/bundle/packages/gst-plugins-good.py          |   24 +
 build/bundle/packages/gst-plugins-ugly.py          |    9 +
 build/bundle/packages/gstreamer.py                 |    3 +
 build/bundle/packages/gtk+.py                      |   27 +
 build/bundle/packages/gtk-sharp.py                 |   33 +
 build/bundle/packages/hicolor-icon-theme.py        |    1 +
 build/bundle/packages/icon-naming-utils.py         |    1 +
 build/bundle/packages/ige-mac-integration-sharp.py |    3 +
 build/bundle/packages/ige-mac-integration.py       |    1 +
 build/bundle/packages/intltool.py                  |    1 +
 build/bundle/packages/libglade.py                  |    1 +
 build/bundle/packages/libiconv.py                  |    7 +
 build/bundle/packages/libjpeg.py                   |    6 +
 build/bundle/packages/libogg.py                    |    1 +
 build/bundle/packages/liboil.py                    |    8 +
 build/bundle/packages/libpng.py                    |    3 +
 build/bundle/packages/libproxy.py                  |    3 +
 build/bundle/packages/librsvg.py                   |    1 +
 build/bundle/packages/libsoup.py                   |    5 +
 build/bundle/packages/libtheora.py                 |    1 +
 build/bundle/packages/libtool.py                   |    1 +
 build/bundle/packages/libvorbis.py                 |    1 +
 build/bundle/packages/libxml2.py                   |    6 +
 build/bundle/packages/mono-addins.py               |    4 +
 build/bundle/packages/mono.py                      |   21 +
 build/bundle/packages/ndesk-dbus-glib.py           |    3 +
 build/bundle/packages/ndesk-dbus.py                |    3 +
 build/bundle/packages/pango.py                     |   14 +
 build/bundle/packages/pixman.py                    |    1 +
 build/bundle/packages/pkg-config.py                |    1 +
 build/bundle/packages/speex.py                     |    1 +
 build/bundle/packages/sqlite.py                    |    3 +
 build/bundle/packages/taglib-sharp.py              |    4 +
 build/bundle/packages/taglib.py                    |    3 +
 build/bundle/packages/tango-icon-theme.py          |    4 +
 build/bundle/packages/wavpack.py                   |    3 +
 build/bundle/profile.darwin.py                     |   11 +
 build/bundle/profile.linux.py                      |   16 +
 build/bundle/profile.mingw-cross.py                |   47 +
 build/bundle/solitary/AssemblyItem.cs              |  165 +
 build/bundle/solitary/DataItem.cs                  |   40 +
 build/bundle/solitary/Entry.cs                     |   90 +
 build/bundle/solitary/Item.cs                      |  124 +
 build/bundle/solitary/Makefile                     |   21 +
 build/bundle/solitary/NativeLibraryItem.cs         |   57 +
 build/bundle/solitary/ProcessTools.cs              |  105 +
 build/bundle/solitary/Solitary.cs                  |  167 +
 build/dll-map-makefile-verifier                    |    2 +-
 build/icon-theme-installer                         |    2 +-
 build/m4/banshee/bnpx11.m4                         |    1 +
 build/m4/banshee/dap-ipod.m4                       |    5 +-
 build/m4/banshee/dap-mtp.m4                        |    9 +-
 build/m4/banshee/gio.m4                            |   17 +
 build/m4/banshee/gstreamer.m4                      |   15 +-
 build/m4/banshee/gtk-sharp.m4                      |   10 +
 build/m4/banshee/libbanshee.m4                     |    8 +-
 build/m4/banshee/moblin.m4                         |   11 +
 build/m4/banshee/mono-addins.m4                    |    6 +-
 build/m4/banshee/moonlight.m4                      |    4 +-
 build/m4/banshee/webkit.m4                         |    2 +-
 build/m4/shamrock/i18n.m4                          |    2 +-
 build/m4/shamrock/nunit.m4                         |   35 +-
 build/m4/shave/shave.in                            |    2 +-
 build/osx/README                                   |   14 +
 build/osx/autogen.sh                               |   39 -
 build/osx/build-deps.profile                       |    5 -
 build/osx/build-deps.sh                            |  159 -
 build/osx/build.env                                |   34 -
 build/osx/targets/bundle-00-base-libs.targets      |    7 -
 build/osx/targets/bundle-10-xiph-libs.targets      |   11 -
 build/osx/targets/bundle-20-extra-libs.targets     |    5 -
 build/osx/targets/bundle-30-gstreamer.targets      |   16 -
 build/osx/targets/bundle-40-managed-libs.targets   |    9 -
 build/osx/targets/gettext.targets                  |    4 -
 build/osx/targets/gst-plugins-base-docs-fix.patch  |   10 -
 build/osx/targets/gstreamer-docs-fix.patch         |   10 -
 build/pkg-config/banshee-1-nowplaying.pc.in        |   10 +
 build/private-icon-theme-installer                 |    2 +-
 configure.ac                                       |   26 +-
 data/Makefile.am                                   |   12 +-
 data/addin-xml-strings.cs                          |  186 +
 data/audio-profiles/vorbis.xml.in                  |    1 +
 data/desktop-files/banshee-1.desktop.mime          |    7 +-
 data/desktop-files/update-desktop-file.sh          |    6 +-
 data/icon-theme-hicolor/Makefile.am                |    4 +-
 libbanshee/banshee-gst.c                           |    7 +-
 libbanshee/banshee-player-missing-elements.c       |   11 -
 libbanshee/banshee-player-private.h                |    7 +-
 libbanshee/libbanshee.vcproj                       |    4 +-
 po/ChangeLog                                       |    5 +
 po/LINGUAS                                         |    2 +
 po/POTFILES.in                                     |   64 +-
 po/br.po                                           | 4921 +++++++++++
 po/ca.po                                           | 3014 +++++--
 po/de.po                                           |  919 ++-
 po/es.po                                           | 2603 +++++--
 po/eu.po                                           | 1448 ++--
 po/fi.po                                           | 3748 ++++++---
 po/gl.po                                           |  744 +-
 po/gu.po                                           | 3765 ++++++---
 po/hu.po                                           |  844 ++-
 po/it.po                                           | 2663 +++++--
 po/ky.po                                           | 5462 ++++++++++++
 po/lt.po                                           | 2442 ++++--
 po/pl.po                                           | 1994 +----
 po/pt.po                                           |  643 +-
 po/ru.po                                           | 2673 ++++--
 po/sl.po                                           | 9216 +++++++++++++-------
 po/sr.po                                           | 7295 +++++++++-------
 po/sr latin po                                     | 7295 +++++++++-------
 po/sv.po                                           | 2641 +++++--
 po/zh_CN.po                                        | 4027 ++++++---
 src/AssemblyInfo.cs.in                             |    2 +-
 .../Banshee.GStreamer/Banshee.GStreamer.dll.config |    3 +-
 .../Banshee.GStreamer/AudioCdRipper.cs             |   84 +-
 .../Banshee.GStreamer/BpmDetector.cs               |   46 +-
 .../Banshee.GStreamer/GstErrors.cs                 |   16 +-
 .../Banshee.GStreamer/PlayerEngine.cs              |  253 +-
 .../Banshee.GStreamer/Banshee.GStreamer/Service.cs |   84 +-
 .../Banshee.GStreamer/Banshee.GStreamer/TagList.cs |   42 +-
 .../Banshee.GStreamer/Transcoder.cs                |   48 +-
 src/Backends/Banshee.Gio/Banshee.Gio.addin.xml     |   18 +
 .../Banshee.Gio/Banshee.Gio.csproj}                |   42 +-
 .../Banshee.Gio/Banshee.IO.Gio/DemuxVfs.cs         |   81 +
 .../Banshee.Gio/Banshee.IO.Gio/Directory.cs        |  152 +
 src/Backends/Banshee.Gio/Banshee.IO.Gio/File.cs    |   97 +
 .../Banshee.Gio/Banshee.IO.Gio/Provider.cs}        |   31 +-
 src/Backends/Banshee.Gio/Banshee.IO.Gio/Tests.cs   |  248 +
 src/Backends/Banshee.Gio/Makefile.am               |   20 +
 .../Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs  |   34 +-
 .../DefaultApplicationHelper.cs                    |   10 +-
 .../Banshee.GnomeBackend/DiscDuplicator.cs         |   14 +-
 .../GConfConfigurationClient.cs                    |   32 +-
 .../GnomeScreensaverManager.cs                     |   10 +-
 .../Banshee.GnomeBackend/GnomeService.cs           |   16 +-
 .../Banshee.Hal/Banshee.HalBackend/BlockDevice.cs  |   16 +-
 .../Banshee.Hal/Banshee.HalBackend/CdromDevice.cs  |   20 +-
 .../Banshee.Hal/Banshee.HalBackend/Device.cs       |   28 +-
 .../Banshee.HalBackend/DeviceMediaCapabilities.cs  |   10 +
 .../Banshee.Hal/Banshee.HalBackend/DiscVolume.cs   |   14 +-
 .../Banshee.Hal/Banshee.HalBackend/DiskDevice.cs   |    4 +-
 .../Banshee.Hal/Banshee.HalBackend/DkDisk.cs       |  128 +
 .../Banshee.HalBackend/HardwareManager.cs          |   20 +-
 .../Banshee.Hal/Banshee.HalBackend/UsbDevice.cs    |   24 +-
 .../Banshee.Hal/Banshee.HalBackend/Volume.cs       |   64 +-
 src/Backends/Banshee.Hal/Hal/Device.cs             |  112 +-
 src/Backends/Banshee.Hal/Hal/Manager.cs            |   64 +-
 src/Backends/Banshee.Hal/Hal/Volume.cs             |   12 +-
 src/Backends/Banshee.Hal/Makefile.am               |    1 +
 .../Banshee.NowPlaying.X11/FullscreenAdapter.cs    |   34 +-
 .../Banshee.OsxBackend/HardwareManager.cs          |   10 +-
 .../Banshee.Osx/Banshee.OsxBackend/OsxService.cs   |   44 +-
 .../Banshee.Unix/Banshee.IO.Unix/DemuxVfs.cs       |   18 +-
 .../Banshee.Unix/Banshee.IO.Unix/Directory.cs      |   18 +-
 src/Backends/Banshee.Unix/Banshee.IO.Unix/File.cs  |   14 +-
 .../Banshee.Unix/Banshee.IO.Unix/Provider.cs       |    4 +-
 src/Backends/Banshee.Unix/Banshee.Unix.dll.config  |    4 +-
 src/Backends/Makefile.am                           |    1 +
 src/Clients/Beroe/Beroe/IndexerClient.cs           |   38 +-
 src/Clients/Booter/Banshee.exe.config              |    2 +-
 src/Clients/Booter/Booter/Entry.cs                 |   47 +-
 src/Clients/Booter/Makefile.am                     |   10 +
 src/Clients/Booter/banshee-1.darwin.in             |   25 +
 .../Booter/{banshee-1.in => banshee-1.linux.in}    |   10 +-
 src/Clients/Halie/Halie/Client.cs                  |   81 +-
 src/Clients/Muinshee/Muinshee/BaseDialog.cs        |   12 +-
 src/Clients/Muinshee/Muinshee/Client.cs            |    4 +-
 src/Clients/Muinshee/Muinshee/MuinsheeActions.cs   |    4 +-
 .../Muinshee/Muinshee/MuinsheeTrackInfoDisplay.cs  |    8 +-
 src/Clients/Muinshee/Muinshee/PlayerInterface.cs   |   48 +-
 src/Clients/Nereid/Nereid/Client.cs                |    2 +-
 src/Clients/Nereid/Nereid/PlayerInterface.cs       |  251 +-
 src/Clients/Nereid/Nereid/ViewContainer.cs         |   78 +-
 .../IndexerClient.cs                               |   66 +-
 .../SimpleIndexerClient.cs                         |   60 +-
 .../ICollectionIndexer.cs                          |   10 +-
 .../ICollectionIndexerService.cs                   |    2 +-
 .../Banshee.CollectionIndexer/Demo/RemoteClient.cs |   14 +-
 .../Hyena/ConsoleCrayon.cs                         |   14 +-
 .../Hyena/DateTimeUtil.cs                          |    6 +-
 src/Core/Banshee.CollectionIndexer/Hyena/Log.cs    |  154 +-
 .../Banshee.Base/ApplicationContext.cs             |   14 +-
 src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs |   39 +-
 .../Banshee.Core/Banshee.Base/FileNamePattern.cs   |  290 +-
 src/Core/Banshee.Core/Banshee.Base/Localization.cs |   64 +-
 src/Core/Banshee.Core/Banshee.Base/NamingUtil.cs   |   30 +-
 src/Core/Banshee.Core/Banshee.Base/Paths.cs        |   82 +-
 .../Banshee.Core/Banshee.Base/PlatformHacks.cs     |   48 +-
 .../Banshee.Base/ProductInformation.cs             |   68 +-
 src/Core/Banshee.Core/Banshee.Base/Resource.cs     |    2 +-
 src/Core/Banshee.Core/Banshee.Base/SafeUri.cs      |   76 +-
 .../Banshee.Base/Tests/CoverArtSpecTests.cs        |   10 +-
 .../Banshee.Base/Tests/FileNamePatternTests.cs     |   76 -
 src/Core/Banshee.Core/Banshee.Base/UriList.cs      |   56 +-
 .../Banshee.Core/Banshee.Collection/AlbumInfo.cs   |   30 +-
 .../Banshee.Core/Banshee.Collection/ArtistInfo.cs  |   14 +-
 .../Banshee.Collection/CacheableItem.cs            |    2 +-
 .../Banshee.Collection/FileTrackInfo.cs            |   20 +-
 .../Banshee.Collection/IPodcastInfo.cs}            |   17 +-
 .../Banshee.Core/Banshee.Collection/ITrackInfo.cs  |    2 +-
 .../Banshee.Core/Banshee.Collection/LicenseInfo.cs |   36 +-
 .../Banshee.Collection/SampleTrackInfo.cs          |    6 +-
 .../Banshee.Collection/TrackFilterType.cs          |    5 +-
 .../Banshee.Core/Banshee.Collection/TrackInfo.cs   |  352 +-
 .../Banshee.Collection/TrackMediaAttributes.cs     |    2 +-
 .../Banshee.Collection/UnknownTrackInfo.cs         |    2 +-
 .../Banshee.Configuration.Schema/ImportSchema.cs   |   30 +-
 .../Banshee.Configuration/ConfigurationClient.cs   |   20 +-
 .../Banshee.Configuration/IConfigurationClient.cs  |    2 +-
 .../MemoryConfigurationClient.cs                   |    8 +-
 .../Banshee.Configuration/SchemaEntry.cs           |   30 +-
 .../XmlConfigurationClient.cs                      |   42 +-
 src/Core/Banshee.Core/Banshee.Core.csproj          |    4 +-
 src/Core/Banshee.Core/Banshee.Core.dll.config      |    4 +-
 .../Banshee.I18n/AssemblyCatalogAttribute.cs       |    6 +-
 src/Core/Banshee.Core/Banshee.I18n/Catalog.cs      |   62 +-
 .../Banshee.Core/Banshee.IO.SystemIO/DemuxVfs.cs   |   20 +-
 .../Banshee.Core/Banshee.IO.SystemIO/Directory.cs  |   10 +-
 src/Core/Banshee.Core/Banshee.IO.SystemIO/File.cs  |    8 +-
 .../Banshee.Core/Banshee.IO.SystemIO/Provider.cs   |    4 +-
 src/Core/Banshee.Core/Banshee.IO/DemuxVfs.cs       |    6 +-
 .../Banshee.IO/DirectoryScannerPipelineElement.cs  |   12 +-
 src/Core/Banshee.Core/Banshee.IO/ExtensionSet.cs   |    6 +-
 src/Core/Banshee.Core/Banshee.IO/File.cs           |    2 +-
 src/Core/Banshee.Core/Banshee.IO/IDirectory.cs     |    6 +-
 src/Core/Banshee.Core/Banshee.IO/IFile.cs          |    2 +-
 src/Core/Banshee.Core/Banshee.IO/IProvider.cs      |    1 +
 src/Core/Banshee.Core/Banshee.IO/Provider.cs       |   25 +-
 src/Core/Banshee.Core/Banshee.IO/StreamAssist.cs   |    4 +-
 src/Core/Banshee.Core/Banshee.IO/Utilities.cs      |   24 +-
 .../Banshee.Core/Banshee.Kernel/DelegateJob.cs     |    4 +-
 .../Banshee.Kernel/IInstanceCriticalJob.cs         |   26 +-
 src/Core/Banshee.Core/Banshee.Kernel/IJob.cs       |   26 +-
 src/Core/Banshee.Core/Banshee.Kernel/Job.cs        |   32 +-
 .../Banshee.Core/Banshee.Kernel/JobPriority.cs     |   26 +-
 src/Core/Banshee.Core/Banshee.Kernel/Scheduler.cs  |   98 +-
 .../Banshee.Core/Banshee.Streaming/CommonTags.cs   |    6 +-
 .../Banshee.Streaming/StreamPlaybackError.cs       |    4 +-
 .../Banshee.Streaming/StreamRatingTagger.cs        |  380 +
 .../Banshee.Core/Banshee.Streaming/StreamTag.cs    |    6 +-
 .../Banshee.Core/Banshee.Streaming/StreamTagger.cs |  153 +-
 src/Core/Banshee.Core/Makefile.am                  |    5 +-
 src/Core/Banshee.Core/Resources/contributors.xml   |   40 +-
 src/Core/Banshee.Core/Resources/translators.xml    |   17 +-
 .../Banshee.Collection.Database/CachedList.cs      |   24 +-
 .../DatabaseAlbumInfo.cs                           |   20 +-
 .../DatabaseAlbumListModel.cs                      |   10 +-
 .../DatabaseArtistInfo.cs                          |   18 +-
 .../DatabaseArtistListModel.cs                     |   12 +-
 .../DatabaseFilterListModel.cs                     |   57 +-
 .../DatabaseImportManager.cs                       |   55 +-
 .../DatabaseImportResultHandler.cs                 |    4 +-
 .../DatabaseQueryFilterModel.cs                    |   29 +-
 .../DatabaseTrackInfo.cs                           |  162 +-
 .../DatabaseTrackListModel.cs                      |  152 +-
 .../FilterModelProvider.cs                         |   10 +-
 .../IDatabaseTrackModelCache.cs                    |    2 +
 .../ISearchable.cs}                                |   18 +-
 .../Banshee.Collection.Database/QueryFilterInfo.cs |   10 +-
 .../Banshee.Collection.Database/RandomBy.cs        |   67 +-
 .../Banshee.Collection.Database/RandomByAlbum.cs   |   19 +-
 .../Banshee.Collection.Database/RandomByArtist.cs  |   14 +-
 .../Banshee.Collection.Database/RandomByRating.cs  |   35 +-
 .../Banshee.Collection.Database/RandomByScore.cs   |   39 +-
 .../Banshee.Collection.Database/RandomBySlot.cs    |   22 +-
 .../Banshee.Collection.Database/RandomByTrack.cs   |   11 +-
 .../Banshee.Collection.Database/Shuffler.cs        |  140 +
 .../Tests/DatabaseAlbumInfoTests.cs                |   18 +-
 .../Tests/DatabaseArtistInfoTests.cs               |    8 +-
 .../Tests/DatabaseTrackInfoTests.cs                |    8 +-
 .../CollectionIndexer.cs                           |   84 +-
 .../CollectionIndexerService.cs                    |   74 +-
 .../ICollectionIndexer.cs                          |   10 +-
 .../ICollectionIndexerService.cs                   |    2 +-
 .../Banshee.Collection/AlbumListModel.cs           |    4 +-
 .../Banshee.Collection/ArtistListModel.cs          |    2 +-
 .../Banshee.Collection/FilterListModel.cs          |   22 +-
 .../Banshee.Collection/ImportEventHandler.cs       |   10 +-
 .../Banshee.Collection/ImportManager.cs            |   80 +-
 .../Banshee.Collection/MemoryTrackListModel.cs     |   10 +-
 .../Banshee.Collection/ModelHelper.cs              |   16 +-
 .../Banshee.Collection/RescanPipeline.cs           |   14 +-
 .../Banshee.Collection/TrackListModel.cs           |    6 +-
 .../DatabaseConfigurationClient.cs                 |   38 +-
 .../DefaultApplicationHelper.cs                    |   10 +-
 .../Banshee.Database/BansheeDbConnection.cs        |   30 +-
 .../Banshee.Database/BansheeDbFormatMigrator.cs    |  289 +-
 .../Banshee.Database/BansheeModelCache.cs          |    4 +-
 .../Banshee.Database/BansheeModelProvider.cs       |    6 +-
 .../Banshee.Database/SortKeyUpdater.cs             |   10 +-
 .../Banshee.Equalizer/EqualizerManager.cs          |  102 +-
 .../Banshee.Equalizer/EqualizerSetting.cs          |   30 +-
 .../Banshee.Hardware/DeviceCommand.cs              |    4 +-
 .../Banshee.Hardware/HardwareManager.cs            |   64 +-
 .../Banshee.Services/Banshee.Hardware/IDevice.cs   |    6 +-
 .../Banshee.Hardware/IDeviceMediaCapabilities.cs   |    1 +
 .../Banshee.Hardware/IHardwareManager.cs           |   14 +-
 .../Banshee.Services/Banshee.Hardware/IVolume.cs   |    4 +-
 .../Banshee.Hardware/VendorProductDeviceNode.cs    |   22 +-
 .../Banshee.Hardware/VendorProductInfo.cs          |   24 +-
 .../Banshee.Library/HomeDirectoryImportSource.cs   |   12 +-
 .../Banshee.Library/IImportSource.cs               |    1 +
 .../Banshee.Library/ImportSourceManager.cs         |   10 +-
 .../Banshee.Library/LibraryImportManager.cs        |    8 +-
 .../Banshee.Library}/LibrarySchema.cs              |   44 +-
 .../Banshee.Library/LibrarySource.cs               |   20 +-
 .../Banshee.Library/MusicFileNamePattern.cs        |  166 +
 .../Banshee.Library/MusicLibrarySource.cs          |   32 +-
 .../Banshee.Library/Tests/FileNamePatternTests.cs  |  132 +
 .../Banshee.Library/ThreadPoolImportSource.cs      |   47 +-
 .../Banshee.Library/VideoLibrarySource.cs          |    6 +-
 .../Banshee.MediaEngine/IAudioCdRipper.cs          |   18 +-
 .../Banshee.MediaEngine/IBpmDetector.cs            |    2 +-
 .../Banshee.MediaEngine/IEqualizer.cs              |    8 +-
 .../Banshee.MediaEngine/IPlayerEngineService.cs    |   12 +-
 .../Banshee.MediaEngine/ITranscoder.cs             |   16 +-
 .../IVisualizationDataSource.cs                    |    2 +-
 .../Banshee.MediaEngine/NullPlayerEngine.cs        |   24 +-
 .../Banshee.MediaEngine/PlayerEngine.cs            |   88 +-
 .../Banshee.MediaEngine/PlayerEngineService.cs     |  232 +-
 .../Banshee.MediaEngine/PlayerEvent.cs             |   30 +-
 .../Banshee.MediaEngine/TranscoderService.cs       |   30 +-
 .../Abakos.Compiler/Expression.cs                  |   96 +-
 .../Abakos.Compiler/Functions.cs                   |   90 +-
 .../Abakos.Compiler/InvalidFunctionException.cs    |   26 +-
 .../Abakos.Compiler/InvalidOperandException.cs     |   30 +-
 .../Abakos.Compiler/InvalidTokenException.cs       |   24 +-
 .../Abakos.Compiler/Operations.cs                  |   46 +-
 .../Abakos.Compiler/Operators.cs                   |   60 +-
 .../Abakos.Compiler/Symbol.cs                      |   52 +-
 .../Abakos.Compiler/UnkownVariableException.cs     |   26 +-
 .../Abakos.Compiler/Values.cs                      |   46 +-
 .../Banshee.MediaProfiles/MediaProfileManager.cs   |   52 +-
 .../Banshee.MediaProfiles/Pipeline.cs              |   98 +-
 .../Banshee.MediaProfiles/PipelineVariable.cs      |   98 +-
 .../Banshee.MediaProfiles/Profile.cs               |   58 +-
 .../Banshee.MediaProfiles/ProfileConfiguration.cs  |   22 +-
 .../EmbeddedMetadataProvider.cs                    |    2 +-
 .../Banshee.Metadata.Embedded/EmbeddedQueryJob.cs  |   38 +-
 .../FileSystemMetadataProvider.cs                  |    2 +-
 .../FileSystemQueryJob.cs                          |   32 +-
 .../LastFMMetadataProvider.cs                      |    6 +-
 .../Banshee.Metadata.LastFM/LastFMQueryJob.cs      |   30 +-
 .../MusicBrainzMetadataProvider.cs                 |    2 +-
 .../MusicBrainzQueryJob.cs                         |   38 +-
 .../RhapsodyMetadataProvider.cs                    |    2 +-
 .../Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs  |   22 +-
 .../Banshee.Metadata/BaseMetadataProvider.cs       |   18 +-
 .../Banshee.Metadata/IMetadataProvider.cs          |   14 +-
 .../Banshee.Metadata/MetadataService.cs            |   45 +-
 .../Banshee.Metadata/MetadataServiceJob.cs         |   44 +-
 .../Banshee.Metadata/SaveTrackMetadataJob.cs       |   11 +-
 .../Banshee.Metadata/SaveTrackMetadataService.cs   |   46 +-
 .../Tests/TaglibReadWriteTests.cs                  |   38 +-
 .../INetworkAvailabilityService.cs                 |   36 +
 .../Banshee.Services/Banshee.Networking/Network.cs |   65 +-
 .../Banshee.Networking/NetworkManager.cs           |   36 +-
 .../State.cs}                                      |   20 +-
 .../Banshee.Services/Banshee.Networking/Wicd.cs    |  112 +
 .../Banshee.PlatformServices/ScreensaverManager.cs |   10 +-
 .../IPlaybackController.cs                         |    2 +-
 .../IPlaybackControllerService.cs                  |   14 +-
 .../PlaybackControllerDatabaseStack.cs             |    2 +-
 .../PlaybackControllerService.cs                   |  149 +-
 .../PlaybackRepeatMode.cs                          |   13 -
 .../PlaybackShuffleMode.cs                         |   13 -
 .../Banshee.Playlist/AbstractPlaylistSource.cs     |    6 +
 .../Banshee.Playlist/PlaylistFileUtil.cs           |   84 +-
 .../Banshee.Playlist/PlaylistSource.cs             |   36 +-
 .../AsfReferencePlaylistFormat.cs                  |    2 +-
 .../Banshee.Playlists.Formats/AsxPlaylistFormat.cs |   32 +-
 .../Banshee.Playlists.Formats/IPlaylistFormat.cs   |    6 +-
 .../InvalidPlaylistException.cs                    |    2 +-
 .../Banshee.Playlists.Formats/M3uPlaylistFormat.cs |   30 +-
 .../PlaylistFormatBase.cs                          |   34 +-
 .../PlaylistFormatDescription.cs                   |   12 +-
 .../Banshee.Playlists.Formats/PlaylistParser.cs    |   28 +-
 .../Banshee.Playlists.Formats/PlsPlaylistFormat.cs |   44 +-
 .../Tests/PlaylistFormatTests.cs                   |    4 +-
 .../XspfPlaylistFormat.cs                          |   10 +-
 .../Banshee.Preferences/Collection.cs              |   32 +-
 .../Banshee.Services/Banshee.Preferences/Page.cs   |    2 +-
 .../Banshee.Preferences/Preference.cs              |   10 +-
 .../Banshee.Preferences/PreferenceBase.cs          |    6 +-
 .../Banshee.Preferences/PreferenceService.cs       |   15 +-
 .../Banshee.Services/Banshee.Preferences/Root.cs   |   20 +-
 .../Banshee.Preferences/SchemaPreference.cs        |   26 +-
 .../Banshee.Preferences/Section.cs                 |    2 +-
 .../Banshee.Preferences/VoidPreference.cs          |    2 +-
 .../Banshee.Services/Banshee.Query/BansheeQuery.cs |  113 +-
 .../Banshee.Query/PlaybackErrorQueryValue.cs       |   74 +
 .../Banshee.ServiceStack/Application.cs            |  100 +-
 .../Banshee.ServiceStack/BatchUserJob.cs           |    2 +-
 .../Banshee.ServiceStack/Client.cs                 |    6 +-
 .../Banshee.ServiceStack/DBusCommandService.cs     |   12 +-
 .../Banshee.ServiceStack/DBusConnection.cs         |   48 +-
 .../Banshee.ServiceStack/DBusServiceManager.cs     |   64 +-
 .../Banshee.ServiceStack/DbIteratorJob.cs          |    2 +-
 .../Banshee.ServiceStack/IUserJob.cs               |   14 +-
 .../Banshee.ServiceStack/ServiceManager.cs         |  144 +-
 .../Banshee.ServiceStack/ServiceStartedHandler.cs  |    8 +-
 .../Banshee.ServiceStack/TestUserJob.cs            |   46 +-
 .../Banshee.ServiceStack/UserJob.cs                |    2 +-
 .../Banshee.ServiceStack/UserJobEventHandler.cs    |    8 +-
 src/Core/Banshee.Services/Banshee.Services.csproj  |    8 +-
 .../Banshee.SmartPlaylist/Migrator.cs              |    2 +-
 .../SmartPlaylistDefinition.cs                     |    4 +-
 .../Banshee.SmartPlaylist/SmartPlaylistSource.cs   |   32 +-
 .../Banshee.Sources/DatabaseSource.cs              |   58 +-
 .../Banshee.Sources/DurationStatusFormatters.cs    |   30 +-
 .../Banshee.Sources/ErrorSource.cs                 |   42 +-
 .../Banshee.Sources/IImportable.cs                 |    2 +-
 .../Banshee.Services/Banshee.Sources/ISource.cs    |    6 +-
 .../Banshee.Sources/ISourceManager.cs              |    2 +-
 .../Banshee.Sources/MessageAction.cs               |   18 +-
 .../Banshee.Sources/PrimarySource.cs               |   61 +-
 .../Banshee.Services/Banshee.Sources/Source.cs     |  190 +-
 .../Banshee.Sources/SourceManager.cs               |   90 +-
 .../Banshee.Sources/SourceMessage.cs               |   38 +-
 .../Banshee.Sources/SourceSortType.cs              |    8 +-
 .../Banshee.Streaming/RadioTrackInfo.cs            |   66 +-
 .../Banshee.Services/Banshee.Web/BaseHttpServer.cs |  362 +
 src/Core/Banshee.Services/Banshee.Web/Browser.cs   |    8 +-
 .../Banshee.Services/Banshee.Web/HttpRequest.cs    |   62 +-
 src/Core/Banshee.Services/Makefile.am              |   13 +-
 .../Banshee.Addins.Gui/AddinDetailsDialog.cs       |   96 -
 .../Banshee.Addins.Gui/AddinTile.cs                |  199 -
 .../Banshee.Addins.Gui/AddinView.cs                |  290 +-
 .../Banshee.Collection.Gui/AlbumListView.cs        |    4 +-
 .../Banshee.Collection.Gui/ArtworkManager.cs       |  214 +-
 .../Banshee.Collection.Gui/ArtworkRenderer.cs      |   34 +-
 .../Banshee.Collection.Gui/BaseTrackListView.cs    |   24 +-
 .../Banshee.Collection.Gui/ColumnCellAlbum.cs      |   78 +-
 .../ColumnCellCreativeCommons.cs                   |  117 +-
 .../Banshee.Collection.Gui/ColumnCellDateTime.cs   |   14 +-
 .../ColumnCellDiscAndCount.cs                      |    4 +-
 .../Banshee.Collection.Gui/ColumnCellDuration.cs   |   10 +-
 .../Banshee.Collection.Gui/ColumnCellFileSize.cs   |    4 +-
 .../Banshee.Collection.Gui/ColumnCellLocation.cs   |    2 +-
 .../ColumnCellPositiveInt.cs                       |   28 +-
 .../Banshee.Collection.Gui/ColumnCellQueryText.cs  |    2 +-
 .../ColumnCellStatusIndicator.cs                   |  183 +-
 .../Banshee.Collection.Gui/ColumnCellTrack.cs      |   18 +-
 .../ColumnCellTrackAndCount.cs                     |    4 +-
 .../ColumnCellTrackNumber.cs                       |    6 +-
 .../Banshee.Collection.Gui/CoverArtEditor.cs       |  209 +
 .../DefaultColumnController.cs                     |   60 +-
 .../PersistentColumnController.cs                  |   46 +-
 .../Banshee.Collection.Gui/SearchableListView.cs   |  285 +
 .../Banshee.Collection.Gui/TerseTrackListView.cs   |    6 +-
 .../Banshee.Collection.Gui/TrackFilterListView.cs  |    8 +-
 .../Banshee.Collection.Gui/TrackListView.cs        |   16 +-
 .../Banshee.Collection.Gui/XmlColumnController.cs  |   50 +-
 .../Banshee.ContextPane/BaseContextPage.cs         |    2 +-
 .../Banshee.ContextPane/ContextPageManager.cs      |    4 +-
 .../Banshee.ContextPane/ContextPane.cs             |   18 +-
 .../Banshee.Equalizer.Gui/EqualizerBandScale.cs    |   24 +-
 .../Banshee.Equalizer.Gui/EqualizerLevelsBox.cs    |    6 +-
 .../EqualizerPresetComboBox.cs                     |   59 +-
 .../Banshee.Equalizer.Gui/EqualizerView.cs         |   93 +-
 .../Banshee.Equalizer.Gui/EqualizerWindow.cs       |   48 +-
 .../Banshee.Gui.Dialogs/AboutDialog.cs             |   40 +-
 .../Banshee.Gui.Dialogs/BansheeDialog.cs           |   18 +-
 .../Banshee.Gui.Dialogs/ConfirmShutdownDialog.cs   |   16 +-
 .../DefaultApplicationHelperDialog.cs              |    6 +-
 .../Banshee.Gui.Dialogs/ErrorListDialog.cs         |   48 +-
 .../Banshee.Gui.Dialogs/FileChooserDialog.cs       |   40 +-
 .../Banshee.Gui.Dialogs/GladeDialog.cs             |    6 +-
 .../Banshee.Gui.Dialogs/GladeWindow.cs             |   18 +-
 .../Banshee.Gui.Dialogs/ImageFileChooserDialog.cs  |   20 +-
 .../Banshee.Gui.Dialogs/OpenLocationDialog.cs      |   42 +-
 .../Banshee.Gui.Dialogs/SeekDialog.cs              |    6 +-
 .../Banshee.Gui.DragDrop/DragDropTarget.cs         |    8 +-
 .../Banshee.Gui.DragDrop/DragDropUtilities.cs      |   16 +-
 .../Banshee.Gui.TrackEditor/AlbumArtistEntry.cs    |   10 +-
 .../BasicTrackDetailsPage.cs                       |   68 +-
 .../EditorEditableUndoAdapter.cs                   |    8 +-
 .../Banshee.Gui.TrackEditor/EditorMode.cs          |    2 +-
 .../Banshee.Gui.TrackEditor/EditorTrackInfo.cs     |   20 +-
 .../Banshee.Gui.TrackEditor/EditorUtilities.cs     |    4 +-
 .../ExtraTrackDetailsPage.cs                       |   26 +-
 .../Banshee.Gui.TrackEditor/FieldOptions.cs        |    3 +-
 .../Banshee.Gui.TrackEditor/FieldPage.cs           |   98 +-
 .../Banshee.Gui.TrackEditor/GenreEntry.cs          |   10 +-
 .../Banshee.Gui.TrackEditor/HelpPage.cs            |   20 +-
 .../Banshee.Gui.TrackEditor/ITrackEditorPage.cs    |    4 +-
 .../Banshee.Gui.TrackEditor/LicenseEntry.cs        |    8 +-
 .../Banshee.Gui.TrackEditor/LyricsPage.cs          |   10 +-
 .../Banshee.Gui.TrackEditor/PageNavigationEntry.cs |   26 +-
 .../Banshee.Gui.TrackEditor/RangeEntry.cs          |   28 +-
 .../Banshee.Gui.TrackEditor/SortingPage.cs         |   12 +-
 .../Banshee.Gui.TrackEditor/SpinButtonEntry.cs     |   13 +-
 .../Banshee.Gui.TrackEditor/StatisticsPage.cs      |  143 +-
 .../Banshee.Gui.TrackEditor/TextEntry.cs           |    8 +-
 .../Banshee.Gui.TrackEditor/TextViewEntry.cs       |   23 +-
 .../Banshee.Gui.TrackEditor/TrackEditorDialog.cs   |  268 +-
 .../Banshee.Gui.Widgets/ArtworkPopup.cs            |   32 +-
 .../Banshee.Gui.Widgets/ClassicTrackInfoDisplay.cs |   96 +-
 .../Banshee.Gui.Widgets/ConnectedMessageBar.cs     |   36 +-
 .../Banshee.Gui.Widgets/ConnectedSeekSlider.cs     |   59 +-
 .../Banshee.Gui.Widgets/ConnectedVolumeButton.cs   |   12 +-
 .../Banshee.Gui.Widgets/CoverArtDisplay.cs         |   90 +
 .../Banshee.Gui.Widgets/LargeTrackInfoDisplay.cs   |   80 +-
 .../Banshee.Gui.Widgets/MainMenu.cs                |    8 +-
 .../Banshee.Gui.Widgets/NextButton.cs              |    6 +-
 .../Banshee.Gui.Widgets/PlaylistMenuItem.cs        |    4 +-
 .../Banshee.Gui.Widgets/RepeatActionButton.cs      |   12 +-
 .../Banshee.Gui.Widgets/TaskStatusIcon.cs          |   22 +-
 .../Banshee.Gui.Widgets/TrackInfoDisplay.cs        |  250 +-
 .../Banshee.Gui.Widgets/UserJobTile.cs             |   90 +-
 .../Banshee.Gui.Widgets/UserJobTileHost.cs         |   20 +-
 .../Banshee.Gui/BansheeActionGroup.cs              |    4 +-
 .../Banshee.Gui/BansheeDbFormatMigratorMonitor.cs  |   26 +-
 .../Banshee.Gui/BansheeIconFactory.cs              |   10 +-
 .../Banshee.Gui/BaseClientWindow.cs                |   66 +-
 .../Banshee.Gui/GlobalActions.cs                   |   87 +-
 .../Banshee.Gui/GtkBaseClient.cs                   |   86 +-
 .../Banshee.Gui/GtkElementsService.cs              |   66 +-
 .../Banshee.Gui/IconThemeUtils.cs                  |    6 +-
 .../Banshee.Gui/InterfaceActionService.cs          |   54 +-
 .../Banshee.Gui/PersistentPaneController.cs        |   26 +-
 .../Banshee.Gui/PersistentWindowController.cs      |   10 +-
 .../Banshee.Gui/PlaybackActions.cs                 |   66 +-
 .../Banshee.Gui/PlaybackRepeatActions.cs           |   32 +-
 .../Banshee.Gui/PlaybackShuffleActions.cs          |   33 +-
 .../Banshee.Gui/SourceActions.cs                   |   54 +-
 .../Banshee.Gui/TrackActions.cs                    |   48 +-
 .../Banshee.ThickClient/Banshee.Gui/ViewActions.cs |   30 +-
 .../Banshee.Library.Gui/FileImportSource.cs        |   47 +-
 .../Banshee.Library.Gui/FolderImportSource.cs      |   38 +-
 .../Banshee.Library.Gui/ImportDialog.cs            |   94 +-
 .../Banshee.Library.Gui/PhotoFolderImportSource.cs |   22 +-
 .../Banshee.MediaProfiles.Gui/ProfileComboBox.cs   |   64 +-
 .../ProfileComboBoxConfigurable.cs                 |   30 +-
 .../ProfileConfigurationDialog.cs                  |  128 +-
 .../ProfileConfigureButton.cs                      |   42 +-
 .../Banshee.Playlist.Gui/PlaylistExportDialog.cs   |   56 +-
 .../DefaultPreferenceWidgets.cs                    |  122 +-
 .../Banshee.Preferences.Gui/DescriptionLabel.cs    |    4 +-
 .../Banshee.Preferences.Gui/NotebookPage.cs        |   28 +-
 .../Banshee.Preferences.Gui/PageComboBox.cs        |    8 +-
 .../Banshee.Preferences.Gui/PreferenceDialog.cs    |   30 +-
 .../Banshee.Preferences.Gui/SectionBox.cs          |   36 +-
 .../Banshee.Preferences.Gui/WidgetFactory.cs       |   56 +-
 .../Banshee.Query.Gui/BansheeQueryBox.cs           |    1 +
 .../PlaybackErrorQueryValueEntry.cs                |   89 +
 .../Banshee.Query.Gui/PlaylistQueryValueEntry.cs   |    2 +-
 .../Banshee.Query.Gui/RatingQueryValueEntry.cs     |    2 +-
 .../SmartPlaylistQueryValueEntry.cs                |    2 +-
 .../Banshee.SmartPlaylist.Gui/Editor.cs            |    8 +-
 .../Banshee.Sources.Gui/CellEditEntry.cs           |    6 +-
 .../CompositeTrackSourceContents.cs                |   18 +-
 .../FilteredListSourceContents.cs                  |  100 +-
 .../Banshee.Sources.Gui/ISourceContents.cs         |    2 +-
 .../ITrackModelSourceContents.cs                   |    2 +-
 .../Banshee.Sources.Gui/LazyLoadSourceContents.cs  |   86 +
 .../Banshee.Sources.Gui/SourceComboBox.cs          |   22 +-
 .../Banshee.Sources.Gui/SourceIconResolver.cs      |   30 +-
 .../Banshee.Sources.Gui/SourceModel.cs             |   80 +-
 .../Banshee.Sources.Gui/SourceRowRenderer.cs       |  138 +-
 .../Banshee.Sources.Gui/SourceView.cs              |  155 +-
 .../Banshee.Sources.Gui/SourceView_DragAndDrop.cs  |   50 +-
 .../Banshee.ThickClient.addin.xml                  |    5 +
 .../Banshee.ThickClient/Banshee.ThickClient.csproj |    4 +-
 .../Banshee.ThickClient.dll.config                 |    3 -
 src/Core/Banshee.ThickClient/Makefile.am           |   14 +-
 .../Resources/banshee-dialogs.glade                |    6 +-
 .../Resources/core-ui-actions-layout.xml           |    3 +-
 .../Banshee.Widgets/Banshee.Widgets.dll.config     |    2 +-
 .../Banshee.Widgets/CustomActionProxy.cs           |    4 +-
 .../Banshee.Widgets/Banshee.Widgets/DateButton.cs  |   38 +-
 .../Banshee.Widgets/DictionaryComboBox.cs          |  117 +-
 .../Banshee.Widgets/DiscUsageDisplay.cs            |  104 +-
 .../Banshee.Widgets/GenericToolItem.cs             |    4 +-
 .../Banshee.Widgets/HoverImageButton.cs            |   56 +-
 .../Banshee.Widgets/LinearProgress.cs              |   34 +-
 .../Banshee.Widgets/Banshee.Widgets/LinkLabel.cs   |  130 +-
 .../Banshee.Widgets/Banshee.Widgets/MenuTile.cs    |   28 +-
 .../Banshee.Widgets/Banshee.Widgets/MessagePane.cs |   20 +-
 .../Banshee.Widgets/PropertyTable.cs               |   58 +-
 .../Banshee.Widgets/RatingActionProxy.cs           |    2 +-
 .../Banshee.Widgets/Banshee.Widgets/SearchEntry.cs |   63 +-
 .../Banshee.Widgets/Banshee.Widgets/SeekSlider.cs  |  142 +-
 .../Banshee.Widgets/StreamPositionLabel.cs         |   82 +-
 src/Core/Banshee.Widgets/Banshee.Widgets/Tile.cs   |   58 +-
 .../Banshee.Widgets/Banshee.Widgets/TileView.cs    |   42 +-
 .../Banshee.Widgets/VolumeButton.cs                |  291 +-
 .../Banshee.Dap.Ipod/Banshee.Dap.Ipod.addin.xml    |    4 +-
 .../Banshee.Dap.Ipod/DatabaseRebuilder.cs          |   68 +-
 .../Banshee.Dap.Ipod/IpodSource.cs                 |  204 +-
 .../Banshee.Dap.Ipod/IpodTrackInfo.cs              |   66 +-
 .../Banshee.Dap.Ipod/PodSleuthDevice.cs            |   74 +-
 .../Banshee.Dap.Ipod/PodSleuthDeviceProvider.cs    |   14 +-
 .../Banshee.Dap.Ipod/UnsupportedDatabaseView.cs    |   52 +-
 .../Banshee.Dap.Karma/Banshee.Dap.Karma.addin.xml  |    4 +-
 .../Banshee.Dap.Karma/KarmaSource.cs               |    2 +-
 .../Banshee.Dap.MassStorage.addin.xml              |   20 +-
 .../Banshee.Dap.MassStorage/AndroidDevice.cs       |   57 +-
 .../CustomMassStorageDevice.cs                     |    6 +-
 .../Banshee.Dap.MassStorage/DeviceMapper.cs        |   23 +-
 .../Banshee.Dap.MassStorage/MassStorageDevice.cs   |  169 +-
 .../Banshee.Dap.MassStorage/MassStorageSource.cs   |  131 +-
 .../Banshee.Dap.MassStorage/WebOSDevice.cs         |    8 +
 src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml  |    4 +-
 .../Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs   |   12 +-
 .../Banshee.Dap.Mtp/MtpTrackInfo.cs                |   34 +-
 .../Banshee.Dap.Mtp/Tests/MtpDapTests.cs           |    2 +-
 src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapActions.cs  |    6 +-
 src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapContent.cs  |   94 +-
 src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs  |   33 +-
 .../Banshee.Dap.Gui/DapPropertiesDialog.cs         |   48 +-
 .../Banshee.Dap.Gui/DapPropertiesDisplay.cs        |   32 +-
 .../Banshee.Dap.Gui/LibrarySyncOptions.cs          |  165 +
 .../Banshee.Dap.Gui/PurchasedMusicActions.cs       |    8 +-
 src/Dap/Banshee.Dap/Banshee.Dap.addin.xml          |    1 -
 src/Dap/Banshee.Dap/Banshee.Dap/DapLibrarySync.cs  |   91 +-
 src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs      |   69 +-
 src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs       |  109 +-
 src/Dap/Banshee.Dap/Banshee.Dap/DapSync.cs         |  208 +-
 .../Banshee.Dap/Banshee.Dap/MediaGroupSource.cs    |   28 +-
 src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs |   22 +-
 src/Dap/Banshee.Dap/Makefile.am                    |    1 +
 .../Banshee.AudioCd/Banshee.AudioCd.addin.xml      |    4 +-
 .../Banshee.AudioCd/AudioCdDiscModel.cs            |  104 +-
 .../Banshee.AudioCd/AudioCdDuplicator.cs           |   12 +-
 .../Banshee.AudioCd/AudioCdRipper.cs               |  103 +-
 .../Banshee.AudioCd/AudioCdService.cs              |  102 +-
 .../Banshee.AudioCd/AudioCdSource.cs               |  112 +-
 .../Banshee.AudioCd/AudioCdTrackInfo.cs            |   24 +-
 .../Banshee.Audiobook.addin.xml}                   |   17 +-
 .../Banshee.Audiobook.csproj}                      |   37 +-
 .../Banshee.Audiobook/AudiobookFileNamePattern.cs  |  148 +
 .../Banshee.Audiobook/AudiobookLibrarySource.cs    |   90 +
 src/Extensions/Banshee.Audiobook/Makefile.am       |   13 +
 .../Banshee.BooScript/Banshee.BooScript.addin.xml  |    4 +-
 .../Banshee.BooScript/BooScriptService.cs          |   42 +-
 .../Banshee.Bookmarks/Banshee.Bookmarks.addin.xml  |    4 +-
 .../Banshee.Bookmarks/BookmarksService.cs          |   20 +-
 src/Extensions/Banshee.Bpm/Banshee.Bpm.addin.xml   |    4 +-
 .../Banshee.Bpm/Banshee.Bpm/BpmDetectJob.cs        |    6 +-
 src/Extensions/Banshee.Bpm/Banshee.Bpm/BpmEntry.cs |    8 +-
 .../Banshee.Bpm/Banshee.Bpm/BpmService.cs          |   36 +-
 .../Banshee.Bpm/Banshee.Bpm/BpmTapAdapter.cs       |    2 +-
 .../Banshee.CoverArt/Banshee.CoverArt.addin.xml    |    4 +-
 .../Banshee.CoverArt/CoverArtJob.cs                |   34 +-
 .../Banshee.CoverArt/CoverArtService.cs            |   58 +-
 src/Extensions/Banshee.Daap/Banshee.Daap.addin.xml |    4 +-
 .../Banshee.Daap/DaapContainerSource.cs            |    4 +-
 .../Banshee.Daap/Banshee.Daap/DaapErrorView.cs     |   70 +-
 .../Banshee.Daap/Banshee.Daap/DaapLoginDialog.cs   |   42 +-
 .../Banshee.Daap/DaapPlaylistSource.cs             |   20 +-
 .../Banshee.Daap/DaapProxyWebServer.cs             |  290 +-
 .../Banshee.Daap/Banshee.Daap/DaapService.cs       |   43 +-
 .../Banshee.Daap/Banshee.Daap/DaapSource.cs        |  108 +-
 .../Banshee.Daap/Banshee.Daap/DaapTrackInfo.cs     |    8 +-
 src/Extensions/Banshee.Daap/Daap/BrokenMD5.cs      |   34 +-
 src/Extensions/Banshee.Daap/Daap/Client.cs         |   26 +-
 src/Extensions/Banshee.Daap/Daap/ContentCodeBag.cs |   18 +-
 src/Extensions/Banshee.Daap/Daap/ContentFetcher.cs |   16 +-
 src/Extensions/Banshee.Daap/Daap/ContentParser.cs  |   14 +-
 src/Extensions/Banshee.Daap/Daap/ContentWriter.cs  |    8 +-
 src/Extensions/Banshee.Daap/Daap/Database.cs       |   40 +-
 src/Extensions/Banshee.Daap/Daap/Hasher.cs         |    8 +-
 src/Extensions/Banshee.Daap/Daap/Playlist.cs       |   22 +-
 src/Extensions/Banshee.Daap/Daap/ServerInfo.cs     |   10 +-
 src/Extensions/Banshee.Daap/Daap/ServiceLocator.cs |   60 +-
 src/Extensions/Banshee.Daap/Daap/Track.cs          |   46 +-
 src/Extensions/Banshee.Daap/Daap/User.cs           |    2 +-
 src/Extensions/Banshee.Daap/Daap/Utility.cs        |    2 +-
 .../Banshee.Emusic/Banshee.Emusic.addin.xml        |   27 +
 .../Banshee.Emusic/Banshee.Emusic.csproj           |   77 +
 .../DownloadManager/DownloadManagerInterface.cs    |  153 +
 .../DownloadManager/DownloadUserJob.cs             |  144 +
 .../Banshee.Emusic/Banshee.Emusic/EmusicImport.cs  |   93 +
 .../Banshee.Emusic/Banshee.Emusic/EmusicService.cs |  157 +
 src/Extensions/Banshee.Emusic/Makefile.am          |   15 +
 .../Banshee.FileSystemQueue.addin.xml              |    6 +-
 .../FileSystemQueueSource.cs                       |   76 +-
 .../Banshee.InternetArchive.addin.xml}             |   15 +-
 .../Banshee.InternetArchive.csproj                 |  124 +
 .../Banshee.InternetArchive/Actions.cs             |   86 +
 .../Banshee.InternetArchive/DetailsSource.cs       |  248 +
 .../Banshee.InternetArchive/DetailsView.cs         |  552 ++
 .../Banshee.InternetArchive/HeaderFilters.cs       |  189 +
 .../Banshee.InternetArchive/HomeSource.cs          |  164 +
 .../Banshee.InternetArchive/HomeView.cs            |  345 +
 .../Banshee.InternetArchive/Item.cs                |  157 +
 .../Banshee.InternetArchive/SearchDescription.cs   |   76 +
 .../Banshee.InternetArchive/SearchSource.cs        |  219 +
 .../Banshee.InternetArchive/SearchView.cs          |  177 +
 .../InternetArchive/Collection.cs                  |   40 +
 .../InternetArchive/Details.cs                     |  264 +
 .../InternetArchive/DetailsFile.cs                 |   93 +
 .../InternetArchive/DetailsReview.cs}              |   54 +-
 .../InternetArchive/Field.cs                       |   95 +
 .../InternetArchive/FieldValue.cs                  |   51 +
 .../InternetArchive/JsonExtensions.cs              |   99 +
 .../InternetArchive/MediaType.cs                   |  117 +
 .../Banshee.InternetArchive/InternetArchive/README |    6 +
 .../InternetArchive/Search.cs                      |  121 +
 .../InternetArchive/SearchResult.cs                |  118 +
 .../InternetArchive/SearchResults.cs               |   81 +
 .../InternetArchive/Sort.cs                        |  111 +
 src/Extensions/Banshee.InternetArchive/Makefile.am |   37 +
 .../Resources/DetailsSourceActiveUI.xml            |   15 +
 .../Banshee.InternetArchive/Resources/GlobalUI.xml |   19 +
 .../Resources/HomeSourceActiveUI.xml               |    7 +
 .../Resources/SearchSourceActiveUI.xml             |   27 +
 .../22x22/categories/internet-archive.png          |  Bin 0 -> 1304 bytes
 .../Banshee.InternetRadio.addin.xml                |    4 +-
 .../Banshee.InternetRadio/InternetRadioSource.cs   |   88 +-
 .../InternetRadioSourceContents.cs                 |   30 +-
 .../Banshee.InternetRadio/StationEditor.cs         |  114 +-
 .../Banshee.InternetRadio/XspfMigrator.cs          |   40 +-
 .../AudioscrobblerService.cs                       |  149 +-
 .../Banshee.Lastfm.Audioscrobbler/Queue.cs         |   40 +-
 .../Banshee.Lastfm.Radio/LastfmActions.cs          |   36 +-
 .../Banshee.Lastfm.Radio/LastfmColumnController.cs |    2 +-
 .../Banshee.Lastfm.Radio/LastfmSource.cs           |  165 +-
 .../Banshee.Lastfm.Radio/LastfmSourceContents.cs   |   14 +-
 .../Banshee.Lastfm.Radio/LastfmTrackInfo.cs        |    2 +-
 .../Banshee.Lastfm.Radio/StationEditor.cs          |    4 +-
 .../Banshee.Lastfm.Radio/StationSource.cs          |   34 +-
 .../RecommendationPane.cs                          |   76 +-
 .../SimilarArtistTile.cs                           |   12 +-
 .../Banshee.Lastfm/Banshee.Lastfm.addin.xml        |    4 +-
 .../Resources/AudioscrobblerMenu.xml               |    2 -
 .../Banshee.Lastfm/Resources/GlobalUI.xml          |    2 +-
 .../Banshee.MediaWeb/MediaWebSource.cs             |   87 -
 .../Banshee.MediaWeb/MediaWebView.cs               |   96 -
 src/Extensions/Banshee.MediaWeb/Makefile.am        |   17 -
 .../Banshee.MiniMode/Banshee.MiniMode.addin.xml    |    3 +-
 .../Banshee.MiniMode/MiniModeService.cs            |   12 +-
 .../Banshee.MiniMode/MiniModeWindow.cs             |   74 +-
 .../Banshee.MiniMode/SourceModel.cs                |   58 +-
 .../Banshee.Moblin/Banshee.Moblin.addin.xml        |   26 +
 .../Banshee.Moblin/Banshee.Moblin.csproj           |  105 +
 .../Banshee.Moblin/Banshee.Moblin.dll.config       |    3 +
 .../Banshee.Moblin/MediaPanelContents.cs           |   87 +
 .../Banshee.Moblin/Banshee.Moblin/MoblinPanel.cs   |   84 +
 .../Banshee.Moblin/Banshee.Moblin/MoblinService.cs |  247 +
 .../Banshee.Moblin/MoblinTrackInfoDisplay.cs}      |   49 +-
 .../Banshee.Moblin/Banshee.Moblin/PlayQueueBox.cs  |   95 +
 .../Banshee.Moblin/Banshee.Moblin/PlaybackBox.cs   |   52 +
 .../Banshee.Moblin/RecentAlbumsList.cs             |  100 +
 .../Banshee.Moblin/RecentAlbumsView.cs             |  146 +
 .../Banshee.Moblin/Banshee.Moblin/SearchEntry.cs   |  133 +
 .../Banshee.Moblin/Banshee.Moblin/SearchHeader.cs  |   92 +
 src/Extensions/Banshee.Moblin/Makefile.am          |   48 +
 .../Banshee.Moblin/Mutter/PanelClient.cs           |  168 +
 src/Extensions/Banshee.Moblin/Mutter/PanelGtk.cs   |   65 +
 .../Banshee.Moblin/Mutter/SetSizeHandler.cs        |   42 +
 src/Extensions/Banshee.Moblin/moblin-panel-media   |    3 +
 .../org.moblin.UX.Shell.Panels.media.service.in    |    3 +
 .../Banshee.MultimediaKeys.addin.xml               |    4 +-
 .../MultimediaKeysService.cs                       |   40 +-
 src/Extensions/Banshee.MultimediaKeys/Makefile.am  |    2 +-
 .../Banshee.NotificationArea.addin.xml             |    4 +-
 .../GtkNotificationAreaBox.cs                      |   18 +-
 .../INotificationAreaBox.cs                        |    6 +-
 .../NotificationAreaService.cs                     |  281 +-
 .../Banshee.NotificationArea/TrackInfoPopup.cs     |   14 +-
 .../X11NotificationArea.cs                         |   46 +-
 .../X11NotificationAreaBox.cs                      |  122 +-
 .../Notifications/Notification.cs                  |    2 +-
 .../Notifications/Notifications.cs                 |    2 +-
 .../Banshee.NowPlaying.dll.config                  |    3 -
 .../Banshee.NowPlaying/FullscreenAdapter.cs        |   20 +-
 .../Banshee.NowPlaying/FullscreenControls.cs       |   16 +-
 .../Banshee.NowPlaying/FullscreenWindow.cs         |  116 +-
 .../Banshee.NowPlaying/NowPlayingContents.cs       |   70 +-
 .../Banshee.NowPlaying/NowPlayingInterface.cs      |   72 +-
 .../Banshee.NowPlaying/NowPlayingSource.cs         |   40 +-
 .../NowPlayingTrackInfoDisplay.cs                  |   16 +-
 .../Banshee.NowPlaying/OverlayWindow.cs            |   66 +-
 .../Banshee.NowPlaying/VideoDisplay.cs             |   32 +-
 .../Banshee.NowPlaying/XOverlayVideoDisplay.cs     |   48 +-
 src/Extensions/Banshee.NowPlaying/Makefile.am      |    3 -
 .../Banshee.PlayQueue/Banshee.PlayQueue.addin.xml  |    6 +-
 .../Banshee.PlayQueue/Banshee.PlayQueue.csproj     |    3 +
 .../Banshee.PlayQueue/HeaderWidget.cs              |  101 +
 .../Banshee.PlayQueue/PlayQueueActions.cs          |   39 +-
 .../Banshee.PlayQueue/PlayQueueSource.cs           |  695 ++-
 .../Banshee.PlayQueue/PlayQueueTrackListModel.cs   |   67 +
 .../Banshee.PlayQueue/QueueableSourceComboBox.cs   |  133 +
 src/Extensions/Banshee.PlayQueue/Makefile.am       |    5 +-
 .../Banshee.PlayQueue/Resources/ActiveSourceUI.xml |    2 +
 .../Banshee.PlayQueue/Resources/GlobalUI.xml       |    3 +
 .../Banshee.PlayerMigration.addin.xml              |    9 +-
 .../Banshee.PlayerMigration.csproj}                |   84 +-
 .../AmarokPlayerImportSource.cs                    |   24 +-
 .../ItunesPlayerImportDialogs.cs                   |  217 +
 .../ItunesPlayerImportSource.cs                    |  818 ++
 .../RhythmboxPlayerImportSource.cs                 |   69 +-
 src/Extensions/Banshee.PlayerMigration/Makefile.am |    5 +-
 .../DownloadStatusFilterModel.cs                   |    8 +-
 .../Banshee.Podcasting.Data/PodcastFeedModel.cs    |   34 +-
 .../Banshee.Podcasting.Data/PodcastSource.cs       |   68 +-
 .../Banshee.Podcasting.Data/PodcastTrackInfo.cs    |   77 +-
 .../PodcastTrackListModel.cs                       |    7 +-
 .../PodcastUnheardFilterModel.cs                   |    8 +-
 .../ColumnCellDownloadStatus.cs                    |    2 +-
 .../Banshee.Podcasting.Gui/ColumnCellPodcast.cs    |   58 +-
 .../ColumnCellPodcastStatusIndicator.cs            |   25 +-
 .../Banshee.Podcasting.Gui/ColumnCellUnheard.cs    |    2 +-
 .../DownloadManager/DownloadManagerInterface.cs    |  122 +-
 .../DownloadManager/DownloadUserJob.cs             |   70 +-
 .../Models/FilterableListModel.cs                  |   72 +-
 .../Banshee.Podcasting.Gui/Models/ListModel.cs     |  106 +-
 .../Banshee.Podcasting.Gui/PodcastActions.cs       |  170 +-
 .../Banshee.Podcasting.Gui/PodcastEpisodePage.cs   |   22 +-
 .../Banshee.Podcasting.Gui/PodcastFeedView.cs      |   70 +-
 .../Banshee.Podcasting.Gui/PodcastItemView.cs      |  129 +-
 .../Dialog/PodcastFeedPropertiesDialog.cs          |   38 +-
 .../Dialog/PodcastPropertiesDialog.cs              |   28 +-
 .../Dialog/PodcastSubscribeDialog.cs               |   46 +-
 .../Dialog/SyncPreferenceComboBox.cs               |   26 +-
 .../PodcastSourceContents.cs                       |   58 +-
 .../Banshee.Podcasting.addin.xml                   |    4 +-
 .../Banshee.Podcasting/ItmsPodcast.cs              |    4 +-
 .../Banshee.Podcasting/PodcastImageFetchJob.cs     |   12 +-
 .../Banshee.Podcasting/PodcastImportManager.cs     |   32 +-
 .../Banshee.Podcasting/PodcastService.cs           |  235 +-
 .../Banshee.Podcasting/PodcastService_Interface.cs |   37 +-
 .../Resources/ActiveSourceUI.xml                   |    1 +
 .../Banshee.RemoteAudio/RemoteAudioService.cs      |   10 +-
 .../Banshee.RemoteAudio/RemoteSpeaker.cs           |    2 +-
 .../Banshee.Sample/Banshee.Sample/SampleSource.cs  |    4 +-
 .../Banshee.Sample/SampleSourceInterface.cs        |   22 +-
 .../Banshee.SqlDebugConsole/SqlActions.cs          |    2 +-
 .../Banshee.Torrent/Banshee.Torrent.addin.xml      |    4 +-
 .../Banshee.Torrent/TorrentFileDownloadTask.cs     |   26 +-
 .../Banshee.Torrent/TorrentService.cs              |   20 +-
 .../Banshee.Wikipedia/Banshee.Wikipedia.addin.xml  |    4 +-
 .../Banshee.Wikipedia/WikipediaView.cs             |    8 -
 src/Extensions/Banshee.Wikipedia/Makefile.am       |    2 +-
 src/Extensions/Makefile.am                         |    4 +
 .../Accessibility/ColumnCellAccessible.cs          |  151 +
 .../Accessibility/ColumnCellTextAccessible.cs}     |   13 +-
 .../ColumnHeaderCellTextAccessible.cs              |  114 +
 .../Accessibility/ICellAccessibleParent.cs}        |   22 +-
 .../Accessibility/ListViewAccessible.cs            |  245 +
 .../Accessibility/ListViewAccessible_Selection.cs  |   92 +
 .../Accessibility/ListViewAccessible_Table.cs      |  192 +
 .../Hyena.Gui/Hyena.Data.Gui/CellContext.cs        |   16 +-
 src/Libraries/Hyena.Gui/Hyena.Data.Gui/Column.cs   |   42 +-
 .../Hyena.Gui/Hyena.Data.Gui/ColumnCell.cs         |   34 +-
 .../Hyena.Gui/Hyena.Data.Gui/ColumnCellCheckBox.cs |   40 +-
 .../Hyena.Gui/Hyena.Data.Gui/ColumnCellRating.cs   |   58 +-
 .../Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs     |   61 +-
 .../Hyena.Gui/Hyena.Data.Gui/ColumnController.cs   |   52 +-
 .../Hyena.Data.Gui/ColumnHeaderCellText.cs         |   19 +-
 .../Hyena.Gui/Hyena.Data.Gui/IListView.cs          |    4 +-
 .../Hyena.Gui/Hyena.Data.Gui/ISizeRequestCell.cs   |    2 +-
 .../Hyena.Gui/Hyena.Data.Gui/ITextCell.cs          |    2 +-
 .../Hyena.Gui/Hyena.Data.Gui/ListView/ListView.cs  |    4 +-
 .../Hyena.Data.Gui/ListView/ListView_Accessible.cs |  177 +
 .../ListView/ListView_DragAndDrop.cs               |   52 +-
 .../Hyena.Data.Gui/ListView/ListView_Header.cs     |  231 +-
 .../ListView/ListView_Interaction.cs               |  344 +-
 .../Hyena.Data.Gui/ListView/ListView_Model.cs      |   99 +-
 .../Hyena.Data.Gui/ListView/ListView_Rendering.cs  |  227 +-
 .../Hyena.Data.Gui/ListView/ListView_Windowing.cs  |   62 +-
 .../Hyena.Gui/Hyena.Data.Gui/ListViewTestModule.cs |   58 +-
 .../Hyena.Gui/Hyena.Data.Gui/ObjectListView.cs     |    6 +-
 .../Hyena.Data.Gui/RowActivatedHandler.cs          |    4 +-
 .../Hyena.Gui/Hyena.Data.Gui/SortableColumn.cs     |   10 +-
 .../Hyena.Gui/Hyena.Gui.Dialogs/ExceptionDialog.cs |   61 +-
 .../Hyena.Gui.Dialogs/VersionInformationDialog.cs  |   40 +-
 .../Hyena.Gui/Hyena.Gui.Theatrics/Actor.cs         |   26 +-
 .../Hyena.Gui/Hyena.Gui.Theatrics/Choreographer.cs |   22 +-
 .../Hyena.Gui/Hyena.Gui.Theatrics/Pulsator.cs      |   36 +-
 .../Hyena.Gui.Theatrics/SingleActorStage.cs        |   12 +-
 .../Hyena.Gui/Hyena.Gui.Theatrics/Stage.cs         |   88 +-
 .../Tests/ChoreographerTests.cs                    |   34 +-
 .../Hyena.Gui/Hyena.Gui.Theming/GtkColors.cs       |   24 +-
 .../Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs        |  117 +-
 src/Libraries/Hyena.Gui/Hyena.Gui.Theming/Theme.cs |   86 +-
 .../Hyena.Gui/Hyena.Gui.Theming/ThemeEngine.cs     |   12 +-
 src/Libraries/Hyena.Gui/Hyena.Gui.csproj           |   14 +-
 src/Libraries/Hyena.Gui/Hyena.Gui.dll.config       |   14 +-
 .../Hyena.Gui/Hyena.Gui/BaseWidgetAccessible.cs    |  262 +
 .../Hyena.Gui/Hyena.Gui/CairoExtensions.cs         |  128 +-
 .../Hyena.Gui/Hyena.Gui/CleanRoomStartup.cs        |   10 +-
 .../Hyena.Gui/Hyena.Gui/CompositeUtils.cs          |   28 +-
 src/Libraries/Hyena.Gui/Hyena.Gui/Contrast.cs      |   64 +-
 src/Libraries/Hyena.Gui/Hyena.Gui/DragDropList.cs  |   10 +-
 .../Hyena.Gui/Hyena.Gui/EditableEraseAction.cs     |    2 +-
 .../Hyena.Gui/Hyena.Gui/EditableInsertAction.cs    |    4 +-
 .../Hyena.Gui/Hyena.Gui/EditableUndoAdapter.cs     |   14 +-
 src/Libraries/Hyena.Gui/Hyena.Gui/GtkUtilities.cs  |   36 +-
 .../Hyena.Gui/Hyena.Gui/GtkWorkarounds.cs          |   30 +-
 .../Hyena.Gui/Hyena.Gui/PangoCairoHelper.cs        |   24 +-
 .../Hyena.Gui/Hyena.Gui/PixbufImageSurface.cs      |   48 +-
 .../Hyena.Gui/Hyena.Gui/RatingRenderer.cs          |   46 +-
 .../Hyena.Gui/Hyena.Gui/ShadingTestWindow.cs       |   18 +-
 .../Hyena.Gui/Hyena.Gui/TestModuleAttribute.cs     |    6 +-
 .../Hyena.Gui/Hyena.Gui/TestModuleRunner.cs        |   22 +-
 src/Libraries/Hyena.Gui/Hyena.Gui/TooltipSetter.cs |   18 +-
 .../Hyena.Query.Gui/FileSizeQueryValueEntry.cs     |    2 +-
 .../Hyena.Query.Gui/IntegerQueryValueEntry.cs      |    2 +-
 .../Hyena.Gui/Hyena.Query.Gui/QueryBox.cs          |   12 +-
 .../Hyena.Gui/Hyena.Query.Gui/QueryDebugger.cs     |   28 +-
 .../Hyena.Gui/Hyena.Query.Gui/QueryLimitBox.cs     |   10 +-
 .../Hyena.Gui/Hyena.Query.Gui/QueryTermBox.cs      |   18 +-
 .../Hyena.Gui/Hyena.Query.Gui/QueryTermsBox.cs     |    8 +-
 .../Hyena.Query.Gui/StringQueryValueEntry.cs       |    2 +-
 .../Hyena.Query.Gui/TimeSpanQueryValueEntry.cs     |    2 +-
 .../Hyena.Gui/Hyena.Widgets/AccordionPane.cs       |   24 +-
 .../Hyena.Gui/Hyena.Widgets/AnimatedBox.cs         |  162 +-
 .../Hyena.Gui/Hyena.Widgets/AnimatedImage.cs       |   50 +-
 .../Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs      |   49 +-
 .../Hyena.Gui/Hyena.Widgets/ComplexMenuItem.cs     |   30 +-
 .../Hyena.Gui/Hyena.Widgets/EntryPopup.cs          |  226 +
 .../Hyena.Gui/Hyena.Widgets/HigMessageDialog.cs    |   33 +-
 .../Hyena.Gui/Hyena.Widgets/ImageButton.cs         |   20 +-
 .../Hyena.Gui/Hyena.Widgets/MenuButton.cs          |   43 +-
 .../Hyena.Gui/Hyena.Widgets/MessageBar.cs          |   63 +-
 .../Hyena.Gui/Hyena.Widgets/PulsingButton.cs       |   36 +-
 .../Hyena.Gui/Hyena.Widgets/RatingEntry.cs         |  201 +-
 .../Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs      |   20 +-
 .../Hyena.Gui/Hyena.Widgets/RoundedFrame.cs        |   52 +-
 .../Hyena.Gui/Hyena.Widgets/ScrolledWindow.cs      |   32 +-
 .../Hyena.Gui/Hyena.Widgets/SegmentedBar.cs        |  278 +-
 .../Hyena.Gui/Hyena.Widgets/SimpleTable.cs         |  103 +
 .../Hyena.Widgets/SmoothScrolledWindow.cs          |   30 +-
 .../Hyena.Gui/Hyena.Widgets/TextViewEditable.cs    |   48 +-
 src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs |   49 +-
 src/Libraries/Hyena.Gui/Makefile.am                |   11 +
 .../Hyena.Collections/CollectionExtensions.cs      |   20 +-
 .../Hyena/Hyena.Collections/IntervalHeap.cs        |  145 +-
 src/Libraries/Hyena/Hyena.Collections/LruCache.cs  |   32 +-
 .../Hyena/Hyena.Collections/QueuePipeline.cs       |   16 +-
 .../Hyena.Collections/QueuePipelineElement.cs      |   54 +-
 .../Hyena/Hyena.Collections/RangeCollection.cs     |  104 +-
 src/Libraries/Hyena/Hyena.Collections/Selection.cs |   74 +-
 .../Hyena.Collections/Tests/IntervalHeapTests.cs   |   10 +-
 .../Hyena.Collections/Tests/QueuePipelineTests.cs  |   10 +-
 .../Tests/RangeCollectionTests.cs                  |  148 +-
 .../Hyena/Hyena.Collections/WriteLineElement.cs    |    2 +-
 .../Hyena/Hyena.CommandLine/CommandLineParser.cs   |   50 +-
 src/Libraries/Hyena/Hyena.CommandLine/Layout.cs    |   64 +-
 .../Hyena/Hyena.CommandLine/LayoutGroup.cs         |   34 +-
 .../Hyena/Hyena.CommandLine/LayoutOption.cs        |   12 +-
 .../Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs      |   50 +-
 .../Hyena.Data.Sqlite/DatabaseColumnAttribute.cs   |   30 +-
 .../HyenaSqliteArrayDataReader.cs                  |   27 +-
 .../Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs  |   24 +-
 .../Hyena.Data.Sqlite/HyenaSqliteConnection.cs     |   64 +-
 .../Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs    |   61 +-
 .../Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs |  133 +-
 .../Hyena/Hyena.Data.Sqlite/SqliteUtils.cs         |   14 +-
 .../Hyena/Hyena.Data.Sqlite/Tests/DbBoundType.cs   |   22 +-
 .../Hyena.Data.Sqlite/Tests/SqliteCommandTests.cs  |   36 +-
 .../Tests/SqliteModelProviderTests.cs              |   64 +-
 .../Hyena.Data.Sqlite/Tests/SqliteUtilTests.cs     |   10 +-
 src/Libraries/Hyena/Hyena.Data/BaseListModel.cs    |   12 +-
 .../Hyena/Hyena.Data/ColumnDescription.cs          |   20 +-
 src/Libraries/Hyena/Hyena.Data/IListModel.cs       |    8 +-
 .../Hyena/Hyena.Data/IPropertyStoreExpose.cs       |    4 +-
 src/Libraries/Hyena/Hyena.Data/MemoryListModel.cs  |   97 +
 src/Libraries/Hyena/Hyena.Data/ModelCache.cs       |    8 +-
 src/Libraries/Hyena/Hyena.Data/PropertyStore.cs    |   62 +-
 src/Libraries/Hyena/Hyena.Jobs/Job.cs              |    4 +-
 src/Libraries/Hyena/Hyena.Jobs/Scheduler.cs        |    2 +-
 .../Hyena/Hyena.Jobs/Tests/SchedulerTests.cs       |    2 +-
 src/Libraries/Hyena/Hyena.Json/Deserializer.cs     |   52 +-
 src/Libraries/Hyena/Hyena.Json/IJsonCollection.cs  |    2 +-
 src/Libraries/Hyena/Hyena.Json/JsonArray.cs        |    6 +-
 src/Libraries/Hyena/Hyena.Json/JsonObject.cs       |    6 +-
 .../Hyena/Hyena.Json/Tests/DeserializerTests.cs    |   18 +-
 .../Hyena/Hyena.Json/Tests/TokenizerTests.cs       |   96 +-
 src/Libraries/Hyena/Hyena.Json/Token.cs            |   35 +-
 src/Libraries/Hyena/Hyena.Json/TokenType.cs        |   11 +-
 src/Libraries/Hyena/Hyena.Json/Tokenizer.cs        |  114 +-
 .../Hyena/Hyena.Query/AliasedObjectSet.cs          |   12 +-
 src/Libraries/Hyena/Hyena.Query/EnumQueryValue.cs  |  111 +
 .../Hyena/Hyena.Query/FileSizeQueryValue.cs        |    6 +-
 .../Hyena.Query/IntegerKeyedObjectQueryValue.cs    |    4 +-
 .../Hyena/Hyena.Query/IntegerQueryValue.cs         |    2 +-
 src/Libraries/Hyena/Hyena.Query/NullQueryValue.cs  |    4 +-
 src/Libraries/Hyena/Hyena.Query/QueryField.cs      |    4 +-
 src/Libraries/Hyena/Hyena.Query/QueryListNode.cs   |   34 +-
 src/Libraries/Hyena/Hyena.Query/QueryNode.cs       |   26 +-
 src/Libraries/Hyena/Hyena.Query/QueryOperator.cs   |    2 +-
 src/Libraries/Hyena/Hyena.Query/QueryParser.cs     |    4 +-
 src/Libraries/Hyena/Hyena.Query/QueryTermNode.cs   |   11 +-
 src/Libraries/Hyena/Hyena.Query/QueryToken.cs      |    2 +-
 src/Libraries/Hyena/Hyena.Query/QueryValue.cs      |    2 +-
 .../Hyena.Query/RelativeTimeSpanQueryValue.cs      |    2 +-
 .../Hyena/Hyena.Query/StringQueryValue.cs          |    2 +-
 .../Hyena/Hyena.Query/Tests/QueryTests.cs          |   30 +-
 src/Libraries/Hyena/Hyena.Query/UserQueryParser.cs |   24 +-
 .../Hyena.SExpEngine/ArithmeticFunctionSet.cs      |   44 +-
 .../Hyena/Hyena.SExpEngine/CastFunctionSet.cs      |   20 +-
 .../Hyena/Hyena.SExpEngine/CompareFunctionSet.cs   |   22 +-
 .../Hyena/Hyena.SExpEngine/ControlFunctionSet.cs   |   32 +-
 src/Libraries/Hyena/Hyena.SExpEngine/Evaluator.cs  |    6 +-
 .../Hyena/Hyena.SExpEngine/EvaluatorBase.cs        |  110 +-
 .../Hyena/Hyena.SExpEngine/FunctionFunctionSet.cs  |   26 +-
 .../Hyena/Hyena.SExpEngine/FunctionNode.cs         |   26 +-
 .../Hyena/Hyena.SExpEngine/FunctionSet.cs          |   24 +-
 .../Hyena/Hyena.SExpEngine/ListFunctionSet.cs      |   70 +-
 src/Libraries/Hyena/Hyena.SExpEngine/Literals.cs   |   20 +-
 .../Hyena/Hyena.SExpEngine/LogicFunctionSet.cs     |   24 +-
 src/Libraries/Hyena/Hyena.SExpEngine/Parser.cs     |   68 +-
 .../Hyena/Hyena.SExpEngine/StringFunctionSet.cs    |   52 +-
 src/Libraries/Hyena/Hyena.SExpEngine/TreeNode.cs   |   40 +-
 .../Hyena/Hyena.SExpEngine/UtilityFunctionSet.cs   |   18 +-
 src/Libraries/Hyena/Hyena.csproj                   |    3 +
 src/Libraries/Hyena/Hyena/ConsoleCrayon.cs         |   14 +-
 src/Libraries/Hyena/Hyena/CryptoUtil.cs            |    4 +-
 src/Libraries/Hyena/Hyena/DateTimeUtil.cs          |    6 +-
 .../Hyena/Hyena/EventArgs.cs}                      |   21 +-
 src/Libraries/Hyena/Hyena/Log.cs                   |  154 +-
 src/Libraries/Hyena/Hyena/PlatformUtil.cs          |    2 +-
 src/Libraries/Hyena/Hyena/StringUtil.cs            |   77 +-
 src/Libraries/Hyena/Hyena/Tests/CryptoUtilTests.cs |    2 +-
 src/Libraries/Hyena/Hyena/Tests/StringUtilTests.cs |   82 +-
 src/Libraries/Hyena/Hyena/Tests/TestBase.cs        |   18 +-
 src/Libraries/Hyena/Hyena/ThreadAssist.cs          |   33 +-
 src/Libraries/Hyena/Hyena/Timer.cs                 |    4 +-
 src/Libraries/Hyena/Hyena/UndoManager.cs           |    4 +-
 src/Libraries/Hyena/Hyena/XdgBaseDirectorySpec.cs  |    4 +-
 src/Libraries/Hyena/Makefile.am                    |    3 +
 src/Libraries/Lastfm.Gui/Lastfm.Gui.csproj         |    4 +
 .../Lastfm.Gui/Lastfm.Gui/AccountLoginDialog.cs    |   55 +-
 .../Lastfm.Gui/Lastfm.Gui/AccountLoginForm.cs      |  106 +-
 src/Libraries/Lastfm.Gui/Lastfm.Gui/Badge.cs       |   14 +-
 src/Libraries/Lastfm.Gui/Resources/badge-hover.png |  Bin 731 -> 1321 bytes
 src/Libraries/Lastfm.Gui/Resources/badge.png       |  Bin 1958 -> 1181 bytes
 src/Libraries/Lastfm.Gui/Test.cs                   |   30 +-
 src/Libraries/Lastfm/Lastfm.Data/DataCore.cs       |   32 +-
 src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs      |   24 +-
 .../Lastfm/Lastfm.Data/LastfmAlbumData.cs          |   24 +-
 src/Libraries/Lastfm/Lastfm.Data/LastfmData.cs     |    2 +-
 src/Libraries/Lastfm/Lastfm.csproj                 |    1 +
 src/Libraries/Lastfm/Lastfm/Account.cs             |   87 +-
 .../Lastfm/Lastfm/AudioscrobblerConnection.cs      |  131 +-
 src/Libraries/Lastfm/Lastfm/Browser.cs             |    4 +-
 src/Libraries/Lastfm/Lastfm/IQueue.cs              |    8 +-
 src/Libraries/Lastfm/Lastfm/LastfmCore.cs          |   30 +-
 src/Libraries/Lastfm/Lastfm/LastfmRequest.cs       |  261 +
 src/Libraries/Lastfm/Lastfm/RadioConnection.cs     |  414 +-
 src/Libraries/Lastfm/Makefile.am                   |    1 +
 .../DownloadGroupStatusChangedEventArgs.cs         |   34 +-
 .../DownloadGroupStatusManager.cs                  |   50 +-
 .../Migo/Migo.DownloadCore/DownloadManager.cs      |  118 +-
 .../Migo.DownloadCore/HttpDownloadTaskErrors.cs    |   28 +-
 .../Migo.DownloadCore/HttpFileDownloadGroup.cs     |  126 +-
 .../Migo/Migo.DownloadCore/HttpFileDownloadTask.cs |  332 +-
 src/Libraries/Migo/Migo.Net/AsyncWebClient.cs      |  343 +-
 .../Migo/Migo.Net/AsyncWebClientStatus.cs          |   52 +-
 .../EventArgs/DownloadDataCompletedEventArgs.cs    |   36 +-
 .../EventArgs/DownloadProgressChangedEventArgs.cs  |   36 +-
 .../EventArgs/DownloadStringCompletedEventArgs.cs  |   38 +-
 .../EventArgs/TransferRateUpdatedEventArgs.cs      |   40 +-
 .../Exceptions/RemoteFileModifiedException.cs      |   40 +-
 .../Migo/Migo.Net/TransferStatusManager.cs         |  122 +-
 .../Migo/Migo.Syndication/EnclosureManager.cs      |  262 +-
 .../FEEDS_EVENTS_DOWNLOAD_COUNT_FLAGS.cs           |   28 +-
 .../Enumerations/FEEDS_EVENTS_ITEM_COUNT_FLAGS.cs  |   28 +-
 .../Enumerations/FeedBackgroundSyncAction.cs       |   32 +-
 .../Enumerations/FeedBackgroundSyncStatus.cs       |   32 +-
 .../Enumerations/FeedDownloadError.cs              |   32 +-
 .../Enumerations/FeedDownloadStatus.cs             |   28 +-
 .../Enumerations/FeedSyncSetting.cs                |   30 +-
 .../EventArgs/FeedDownloadCompletedEventArgs.cs    |   42 +-
 .../EventArgs/FeedDownloadCountChangedEventArgs.cs |   38 +-
 .../Migo.Syndication/EventArgs/FeedEventArgs.cs    |   38 +-
 .../EventArgs/FeedItemCountChangedEventArgs.cs     |   40 +-
 .../EventArgs/FeedItemEventArgs.cs                 |   32 +-
 src/Libraries/Migo/Migo.Syndication/Feed.cs        |  239 +-
 .../Migo/Migo.Syndication/FeedEnclosure.cs         |  109 +-
 src/Libraries/Migo/Migo.Syndication/FeedItem.cs    |   60 +-
 src/Libraries/Migo/Migo.Syndication/FeedManager.cs |   48 +-
 .../Migo/Migo.Syndication/FeedUpdateTask.cs        |   82 +-
 .../Migo/Migo.Syndication/FeedsManager.cs          |  188 +-
 .../TablesManagers/EnclosuresTableManager.cs       |  226 +-
 .../TablesManagers/FeedsTableManager.cs            |  342 +-
 .../TablesManagers/ItemsTableManager.cs            |  288 +-
 src/Libraries/Migo/Migo.Syndication/MigoItem.cs    |    2 +-
 .../Migo/Migo.Syndication/MigoModelProvider.cs     |   18 +-
 .../Migo/Migo.Syndication/Rfc822DateTime.cs        |   52 +-
 src/Libraries/Migo/Migo.Syndication/RssParser.cs   |  103 +-
 .../Migo/Migo.Syndication/Tests/XmlTests.cs        |    6 +-
 .../AsyncCommandQueue/AsyncCommandQueue.cs         |  122 +-
 .../AsyncCommandQueue/CommandDelegate.cs           |   28 +-
 .../AsyncCommandQueue/CommandQueueManager.cs       |   46 +-
 .../AsyncCommandQueue/CommandWrapper.cs            |   32 +-
 .../AsyncCommandQueue/EventWrapper.cs              |   32 +-
 .../Migo.TaskCore/AsyncCommandQueue/ICommand.cs    |   26 +-
 .../Migo/Migo.TaskCore/AsyncTaskScheduler.cs       |  134 +-
 .../Migo.TaskCore/Enumerations/TaskPriority.cs     |   28 +-
 .../Migo/Migo.TaskCore/Enumerations/TaskStatus.cs  |   28 +-
 .../EventArgs/GroupStatusChangedEventArgs.cs       |   38 +-
 .../EventArgs/TaskCompletedEventArgs.cs            |   28 +-
 .../Migo/Migo.TaskCore/EventArgs/TaskEventArgs.cs  |   44 +-
 .../EventArgs/TaskStatusChangedEventArgs.cs        |   40 +-
 .../EventArgs/TaskStatusChangedInfo.cs             |   40 +-
 .../Exceptions/TaskStatusException.cs              |   32 +-
 .../Migo/Migo.TaskCore/GroupProgressManager.cs     |  110 +-
 .../Migo/Migo.TaskCore/GroupStatusManager.cs       |  184 +-
 .../EventArgs/ManipulatedEventArgs.cs              |   46 +-
 .../EventArgs/ReorderedEventArgs.cs                |   30 +-
 .../EventArgs/TaskAddedEventArgs.cs                |   56 +-
 .../EventArgs/TaskRemovedEventArgs.cs              |   46 +-
 .../ITaskCollectionEnumerator.cs                   |   32 +-
 .../Migo.TaskCore.Collections/PriorityQueue.cs     |   24 +-
 .../Migo.TaskCore.Collections/TaskCollection.cs    |  124 +-
 .../Migo.TaskCore.Collections/TaskList.cs          |  260 +-
 .../TaskListEnumerator.cs                          |   82 +-
 src/Libraries/Migo/Migo.TaskCore/Task.cs           |  140 +-
 src/Libraries/Migo/Migo.TaskCore/TaskGroup.cs      |  482 +-
 .../Mono.Data.Sqlite/Mono.Data.Sqlite/SQLite3.cs   |    8 +-
 .../Mono.Data.Sqlite/SQLite3_UTF16.cs              |    6 +-
 .../Mono.Data.Sqlite/SQLiteBase.cs                 |   12 +-
 .../Mono.Data.Sqlite/SQLiteCommand.cs              |   14 +-
 .../Mono.Data.Sqlite/SQLiteCommandBuilder.cs       |    8 +-
 .../Mono.Data.Sqlite/SQLiteConnection.cs           |   38 +-
 .../SQLiteConnectionStringBuilder.cs               |    8 +-
 .../Mono.Data.Sqlite/SQLiteConvert.cs              |   14 +-
 .../Mono.Data.Sqlite/SQLiteDataAdapter.cs          |    6 +-
 .../Mono.Data.Sqlite/SQLiteDataReader.cs           |   58 +-
 .../Mono.Data.Sqlite/SQLiteEnlistment.cs           |    6 +-
 .../Mono.Data.Sqlite/SQLiteException.cs            |    6 +-
 .../Mono.Data.Sqlite/SQLiteFactory.cs              |    6 +-
 .../Mono.Data.Sqlite/SQLiteFunction.cs             |   14 +-
 .../Mono.Data.Sqlite/SQLiteFunctionAttribute.cs    |    6 +-
 .../SQLiteMetaDataCollectionNames.cs               |    6 +-
 .../Mono.Data.Sqlite/SQLiteParameter.cs            |   16 +-
 .../Mono.Data.Sqlite/SQLiteParameterCollection.cs  |    6 +-
 .../Mono.Data.Sqlite/SQLiteStatement.cs            |   12 +-
 .../Mono.Data.Sqlite/SQLiteTransaction.cs          |    6 +-
 .../Mono.Data.Sqlite/SR.Designer.cs                |   24 +-
 .../Mono.Data.Sqlite/SqliteDataSourceEnumerator.cs |    8 +-
 .../Mono.Data.Sqlite/UnsafeNativeMethods.cs        |   12 +-
 .../Mono.Media/Media.Playlists.Xspf/LinkEntry.cs   |   10 +-
 .../Mono.Media/Media.Playlists.Xspf/MetaEntry.cs   |    8 +-
 .../Mono.Media/Media.Playlists.Xspf/Playlist.cs    |  102 +-
 .../Media.Playlists.Xspf/Tests/XspfTests.cs        |    2 +-
 .../Mono.Media/Media.Playlists.Xspf/Track.cs       |   92 +-
 .../Mono.Media/Media.Playlists.Xspf/W3CDateTime.cs |   76 +-
 .../Mono.Media/Media.Playlists.Xspf/XmlUtil.cs     |   58 +-
 .../Media.Playlists.Xspf/XspfBaseObject.cs         |   48 +-
 src/Libraries/Mtp/Makefile.am                      |   10 +
 src/Libraries/Mtp/Mtp/AbstractTrackList.cs         |    4 +-
 src/Libraries/Mtp/Mtp/Album.cs                     |   66 +-
 src/Libraries/Mtp/Mtp/Error.cs                     |  118 +-
 src/Libraries/Mtp/Mtp/ErrorCode.cs                 |   66 +-
 src/Libraries/Mtp/Mtp/File.cs                      |   24 +-
 src/Libraries/Mtp/Mtp/FileSampleData.cs            |   56 +-
 src/Libraries/Mtp/Mtp/FileType.cs                  |  114 +-
 src/Libraries/Mtp/Mtp/Folder.cs                    |  486 +-
 src/Libraries/Mtp/Mtp/MtpDevice.cs                 |  867 +-
 src/Libraries/Mtp/Mtp/Playlist.cs                  |   68 +-
 src/Libraries/Mtp/Mtp/Track.cs                     |  495 +-
 src/Libraries/MusicBrainz/MusicBrainz/Artist.cs    |   50 +-
 src/Libraries/MusicBrainz/MusicBrainz/Disc.cs      |    2 +-
 src/Libraries/MusicBrainz/MusicBrainz/DiscLinux.cs |   58 +-
 src/Libraries/MusicBrainz/MusicBrainz/DiscWin32.cs |    4 +-
 .../MusicBrainz/MusicBrainz/DiscWin32NT.cs         |    2 +-
 src/Libraries/MusicBrainz/MusicBrainz/Label.cs     |   32 +-
 src/Libraries/MusicBrainz/MusicBrainz/LocalDisc.cs |   24 +-
 .../MusicBrainz/MusicBrainz/MusicBrainzEntity.cs   |   24 +-
 .../MusicBrainz/MusicBrainz/MusicBrainzItem.cs     |   36 +-
 .../MusicBrainz/MusicBrainz/MusicBrainzObject.cs   |   68 +-
 .../MusicBrainz/MusicBrainz/MusicBrainzService.cs  |    6 +-
 src/Libraries/MusicBrainz/MusicBrainz/Query.cs     |   46 +-
 src/Libraries/MusicBrainz/MusicBrainz/Relation.cs  |    6 +-
 src/Libraries/MusicBrainz/MusicBrainz/Release.cs   |   46 +-
 src/Libraries/MusicBrainz/MusicBrainz/Track.cs     |   40 +-
 src/Libraries/MusicBrainz/MusicBrainz/Utils.cs     |   14 +-
 .../MusicBrainz/MusicBrainz/XmlRequestEventArgs.cs |    2 +-
 src/create-extension                               |    2 +
 tests/Makefile.am                                  |    1 +
 tests/test-a11y                                    |  125 +
 1214 files changed, 85055 insertions(+), 42780 deletions(-)
---
diff --cc src/Backends/Banshee.GStreamer/Banshee.GStreamer/Service.cs
index c34635a,cd8d11e..4647426
--- a/src/Backends/Banshee.GStreamer/Banshee.GStreamer/Service.cs
+++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer/Service.cs
@@@ -47,13 -47,13 +47,13 @@@ namespace Banshee.GStreame
          public Service ()
          {
          }
-         
+ 
          [DllImport ("libbanshee.dll")]
          private static extern void gstreamer_initialize (bool debugging, BansheeLogHandler log_handler);
-         
+ 
          void IExtensionService.Initialize ()
          {
 -            bool debugging = Banshee.Base.ApplicationContext.Debugging;
 +            bool debugging = ApplicationContext.Debugging;
              if (debugging) {
                  native_log_handler = new BansheeLogHandler (NativeLogHandler);
              }
@@@ -112,15 -112,15 +112,15 @@@
              } else if (component != null) {
                  message = String.Format ("(libbanshee:{0}) {1}", component, message);
              }
-             
+ 
              Log.Commit (type, message, null, false);
          }
-         
+ 
          private static void OnTestMediaProfile (object o, TestProfileArgs args)
          {
 -            bool no_test = Banshee.Base.ApplicationContext.EnvironmentIsSet ("BANSHEE_PROFILES_NO_TEST");
 +            bool no_test = ApplicationContext.EnvironmentIsSet ("BANSHEE_PROFILES_NO_TEST");
              bool available = false;
-             
+ 
              foreach (Pipeline.Process process in args.Profile.Pipeline.GetPendingProcessesById ("gstreamer")) {
                  string pipeline = args.Profile.Pipeline.CompileProcess (process);
                  if (no_test || TestPipeline (pipeline)) {
diff --cc src/Backends/Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs
index bfbdf46,daf5469..1afb39e
--- a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs
+++ b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs
@@@ -66,17 -65,17 +66,17 @@@ namespace Banshee.GnomeBacken
                      Catalog.GetString ("Write selected tracks to an audio CD"),
                      OnBurnDisc)
              });
-             
+ 
              Gtk.Action action = uia_service.TrackActions["BurnDiscAction"];
              action.IconName = "media-write-cd";
-             
+ 
              uia_service.UIManager.AddUiFromResource ("GlobalUI.xml");
-             
+ 
              UpdateActions ();
 -            uia_service.TrackActions.SelectionChanged += delegate { Banshee.Base.ThreadAssist.ProxyToMain (UpdateActions); };
 -            ServiceManager.SourceManager.ActiveSourceChanged += delegate { Banshee.Base.ThreadAssist.ProxyToMain (UpdateActions); };
 +            uia_service.TrackActions.SelectionChanged += delegate { ThreadAssist.ProxyToMain (UpdateActions); };
 +            ServiceManager.SourceManager.ActiveSourceChanged += delegate { ThreadAssist.ProxyToMain (UpdateActions); };
          }
-         
+ 
          public void Dispose ()
          {
          }
diff --cc src/Clients/Nereid/Nereid/PlayerInterface.cs
index 051db19,9100971..c9fcfc6
--- a/src/Clients/Nereid/Nereid/PlayerInterface.cs
+++ b/src/Clients/Nereid/Nereid/PlayerInterface.cs
@@@ -282,11 -348,11 +349,11 @@@ namespace Nerei
          private TrackListModel previous_track_model = null;
          private void OnActiveSourceChanged (SourceEventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  Source source = ServiceManager.SourceManager.ActiveSource;
-     
+ 
                  view_container.SearchSensitive = source != null && source.CanSearch;
-                 
+ 
                  if (source == null) {
                      return;
                  }
diff --cc src/Core/Banshee.Core/Banshee.Base/Paths.cs
index 19b60cf,256ace3..402ca24
--- a/src/Core/Banshee.Core/Banshee.Base/Paths.cs
+++ b/src/Core/Banshee.Core/Banshee.Base/Paths.cs
@@@ -30,10 -30,8 +30,10 @@@ using System
  using System.IO;
  using Mono.Unix;
  
 +using Hyena;
 +
  using Banshee.Configuration.Schema;
-  
+ 
  namespace Banshee.Base
  {
      public class Paths
diff --cc src/Core/Banshee.Core/Makefile.am
index a41be72,4cba7ba..4dd48bf
--- a/src/Core/Banshee.Core/Makefile.am
+++ b/src/Core/Banshee.Core/Makefile.am
@@@ -12,9 -13,8 +12,7 @@@ SOURCES =  
  	Banshee.Base/Resource.cs \
  	Banshee.Base/SafeUri.cs \
  	Banshee.Base/Tests/CoverArtSpecTests.cs \
- 	Banshee.Base/Tests/FileNamePatternTests.cs \
- 	Banshee.Base/Tests/TaglibReadWriteTests.cs \
  	Banshee.Base/UriList.cs \
 -	Banshee.Base/XdgBaseDirectorySpec.cs \
  	Banshee.Collection/AlbumInfo.cs \
  	Banshee.Collection/ArtistInfo.cs \
  	Banshee.Collection/CacheableItem.cs \
diff --cc src/Core/Banshee.Services/Banshee.Collection/FilterListModel.cs
index 7c69fd9,104b4a5..6d9e682
--- a/src/Core/Banshee.Services/Banshee.Collection/FilterListModel.cs
+++ b/src/Core/Banshee.Services/Banshee.Collection/FilterListModel.cs
@@@ -66,13 -65,13 +66,13 @@@ namespace Banshee.Collectio
          {
              Reload (false);
          }
-         
+ 
          public abstract void Reload (bool notify);
-         
+ 
          private void HandleSelectionChanged (object sender, EventArgs args)
          {
 -            Banshee.Base.ThreadAssist.SpawnFromMain (ReloadBrowsingModel);
 +            ThreadAssist.SpawnFromMain (ReloadBrowsingModel);
-         } 
+         }
  
          private void ReloadBrowsingModel ()
          {
diff --cc src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs
index 4def53e,e2dfa36..8848b86
--- a/src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs
+++ b/src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs
@@@ -65,10 -65,10 +65,10 @@@ namespace Banshee.Databas
  
              migrator = new BansheeDbFormatMigrator (this);
              configuration = new DatabaseConfigurationClient (this);
-             
+ 
 -            if (Banshee.Base.ApplicationContext.CommandLine.Contains ("debug-sql")) {
 +            if (ApplicationContext.CommandLine.Contains ("debug-sql")) {
                  Hyena.Data.Sqlite.HyenaSqliteCommand.LogAll = true;
 -                WarnIfCalledFromThread = Banshee.Base.ThreadAssist.MainThread;
 +                WarnIfCalledFromThread = ThreadAssist.MainThread;
              }
          }
  
diff --cc src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
index 2731684,8047be7..9b54cbc
--- a/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs
@@@ -91,10 -91,10 +91,10 @@@ namespace Banshee.Librar
  
          protected void LogError (string path, string msg)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  ErrorSource error_source = ServiceManager.SourceManager.MusicLibrary.ErrorSource;
                  error_source.AddMessage (path, msg);
-     
+ 
                  Log.Error (path, msg, false);
              });
          }
diff --cc src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs
index 4840fe0,7a6ebdd..0df8de3
--- a/src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs
+++ b/src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs
@@@ -71,9 -71,9 +71,9 @@@ namespace Banshee.Librar
          protected override bool HasArtistAlbum {
              get { return false; }
          }
-         
+ 
          public override string DefaultBaseDirectory {
-             get { return Hyena.XdgBaseDirectorySpec.GetUserDirectory ("XDG_VIDEOS_DIR", "Videos"); }
 -            get { return Banshee.Base.Paths.GetXdgDirectoryUnderHome ("XDG_VIDEOS_DIR", "Videos"); }
++            get { return Hyena.XdgBaseDirectorySpec.GetXdgDirectoryUnderHome ("XDG_VIDEOS_DIR", "Videos"); }
          }
  
          public override IEnumerable<SmartPlaylistDefinition> DefaultSmartPlaylists {
diff --cc src/Core/Banshee.Services/Banshee.Sources/ErrorSource.cs
index 72475eb,3f1ab9a..8491a12
--- a/src/Core/Banshee.Services/Banshee.Sources/ErrorSource.cs
+++ b/src/Core/Banshee.Services/Banshee.Sources/ErrorSource.cs
@@@ -58,20 -57,20 +58,20 @@@ namespace Banshee.Source
              Parent.RemoveChildSource (this);
              return true;
          }
-         
+ 
          private void OnReloaded ()
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  EventHandler handler = Reloaded;
                  if (handler != null) {
                      handler (this, EventArgs.Empty);
                  }
              });
          }
-         
+ 
          private void OnCleared ()
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  EventHandler handler = Cleared;
                  if (handler != null) {
                      handler (this, EventArgs.Empty);
diff --cc src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs
index 4538e5b,d89ea3c..94a3701
--- a/src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs
+++ b/src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs
@@@ -135,10 -133,10 +135,10 @@@ namespace Banshee.Source
          {
              AddSource(source, false);
          }
-         
+ 
          public void AddSource(Source source, bool isDefault)
          {
 -            Banshee.Base.ThreadAssist.AssertInMainThread ();
 +            ThreadAssist.AssertInMainThread ();
              if(source == null || ContainsSource (source)) {
                  return;
              }
@@@ -253,10 -251,10 +253,10 @@@
          {
              return sources.Contains(source);
          }
-         
+ 
          private void OnSourceUpdated(object o, EventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  SourceEventHandler handler = SourceUpdated;
                  if(handler != null) {
                      SourceEventArgs evargs = new SourceEventArgs();
@@@ -323,10 -321,10 +323,10 @@@
          {
              SetActiveSource(source, true);
          }
-         
+ 
          public void SetActiveSource(Source source, bool notify)
          {
 -            Banshee.Base.ThreadAssist.AssertInMainThread ();
 +            ThreadAssist.AssertInMainThread ();
              if(source == null || !source.CanActivate || active_source == source) {
                  return;
              }
diff --cc src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinView.cs
index a12c959,6e2eee8..0b2be32
--- a/src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinView.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinView.cs
@@@ -30,178 -31,153 +31,155 @@@ using System.Linq
  using System.Collections.Generic;
  using Gtk;
  
 +using Hyena;
 +
+ using Mono.Unix;
  using Mono.Addins;
  
+ using Hyena;
+ 
  namespace Banshee.Addins.Gui
  {
-     public class AddinView : EventBox
+     public class AddinView : VBox
      {
-         private List<AddinTile> tiles = new List<AddinTile> ();
-         private VBox box = new VBox ();
-         
-         private int selected_index = -1;
-     
+         private TreeView tree_view;
+ 
          public AddinView ()
          {
-             CanFocus = true;
-             VisibleWindow = false;
-             
-             box.Show ();
-             Add (box);
-             
-             LoadAddins ();
-         }
-         
-         private void LoadAddins ()
-         {
-             foreach (Addin addin in AddinManager.Registry.GetAddins ()) {
-                 if (addin.Name != addin.Id && addin.Description != null && 
-                     addin.Description.Category != null && !addin.Description.Category.StartsWith ("required:") &&
-                     (!addin.Description.Category.Contains ("Debug") || ApplicationContext.Debugging)) {
-                     AppendAddin (addin);
-                 }
-             }
-             
-             if (tiles.Count > 0) {
-                 tiles[tiles.Count - 1].Last = true;
-             }
-         }
-         
-         private bool changing_styles = false;
-         
-         protected override void OnStyleSet (Style previous_style)
-         {
-             if (changing_styles) {
-                 return;
-             }
-             
-             changing_styles = true;
-             base.OnStyleSet (previous_style);
-             Parent.ModifyBg (StateType.Normal, Style.Base (StateType.Normal));
-             changing_styles = false;
-         }
-         
-         private void AppendAddin (Addin addin)
-         {
-             AddinTile tile = new AddinTile (addin);
-             tile.ActiveChanged += OnAddinActiveChanged;
-             tile.SizeAllocated += OnAddinSizeAllocated;
-             tile.Show ();
-             tiles.Add (tile);
-             
-             box.PackStart (tile, false, false, 0);
-         }
-         
-         private void OnAddinActiveChanged (object o, EventArgs args)
-         {
-             foreach (AddinTile tile in tiles) {
-                 tile.UpdateState ();
-             }
-         }
-         
-         private void OnAddinSizeAllocated (object o, SizeAllocatedArgs args)
-         {
-             ScrolledWindow scroll;
-             
-             if (Parent == null || (scroll = Parent.Parent as ScrolledWindow) == null) {
-                 return;
-             }
-             
-             AddinTile tile = (AddinTile)o;
-             
-             if (tiles.IndexOf (tile) != selected_index) {
-                 return;
-             }
-             
-             Gdk.Rectangle ta = ((AddinTile)o).Allocation;
-             Gdk.Rectangle va = new Gdk.Rectangle (0, (int)scroll.Vadjustment.Value, 
-                 Allocation.Width, Parent.Allocation.Height);
-             
-             if (!va.Contains (ta)) {
-                 double delta = 0.0;
-                 if (ta.Bottom > va.Bottom) {
-                     delta = ta.Bottom - va.Bottom;
-                 } else if (ta.Top < va.Top) {
-                     delta = ta.Top - va.Top;
+             var hbox = new HBox () { Spacing = 6 };
+ 
+             var filter_label = new Label (Catalog.GetString ("Show:"));
+             var filter_combo = ComboBox.NewText ();
+             filter_combo.AppendText (Catalog.GetString ("All"));
+             filter_combo.AppendText (Catalog.GetString ("Enabled"));
+             filter_combo.AppendText (Catalog.GetString ("Not Enabled"));
+             filter_combo.Active = 0;
+ 
+             var search_label = new Label (Catalog.GetString ("Search:"));
+             var search_entry = new Banshee.Widgets.SearchEntry () {
+                 WidthRequest = 160,
+                 Visible = true,
+                 Ready = true
+             };
+ 
+             hbox.PackStart (filter_label, false, false, 0);
+             hbox.PackStart (filter_combo, false, false, 0);
+             hbox.PackEnd   (search_entry, false, false, 0);
+             hbox.PackEnd   (search_label, false, false, 0);
+ 
+             var model = new TreeStore (typeof(bool), typeof(bool), typeof (string), typeof (Addin));
+ 
+             var addins = AddinManager.Registry.GetAddins ().Where (a => { return
+                 a.Name != a.Id && a.Description != null &&
+                 !String.IsNullOrEmpty (a.Description.Category) && !a.Description.Category.StartsWith ("required:") &&
+                 (!a.Description.Category.Contains ("Debug") || Banshee.Base.ApplicationContext.Debugging);
+             });
+ 
+             var categorized_addins = addins.GroupBy<Addin, string> (a => a.Description.Category)
+                                            .Select (c => new {
+                                                 Addins = c.OrderBy (a => Catalog.GetString (a.Name)).ToList (),
+                                                 Name = c.Key,
+                                                 NameLocalized = Catalog.GetString (c.Key) })
+                                            .OrderBy (c => c.NameLocalized)
+                                            .ToList ();
+ 
+             tree_view = new TreeView () {
+                 FixedHeightMode = false,
+                 HeadersVisible = false,
+                 SearchColumn = 1,
+                 RulesHint = true,
+                 Model = model
+             };
+ 
+             var txt_cell = new CellRendererText () { WrapMode = Pango.WrapMode.Word };
+             tree_view.AppendColumn ("Name", txt_cell , "markup", Columns.Name);
+ 
+             var check_cell = new CellRendererToggle () { Activatable = true };
+             tree_view.AppendColumn ("Enable", check_cell, "visible", Columns.IsAddin, "active", Columns.IsEnabled);
+             check_cell.Toggled += (o, a) => {
+                 TreeIter iter;
+                 if (model.GetIter (out iter, new TreePath (a.Path))) {
+                     var addin = model.GetValue (iter, 3) as Addin;
+                     bool enabled = (bool) model.GetValue (iter, 1);
+                     addin.Enabled = !enabled;
+                     model.SetValue (iter, 1, addin.Enabled);
                  }
-                 scroll.Vadjustment.Value += delta;
-                 QueueDraw();
-             }
-         }
-         
-         protected override bool OnButtonPressEvent (Gdk.EventButton evnt)
-         {
-             HasFocus = true;
-             
-             ClearSelection ();
-             
-             for (int i = 0; i < tiles.Count; i++) {
-                 if (tiles[i].Allocation.Contains ((int)evnt.X, (int)evnt.Y)) {
-                     Select (i);
-                     break;
+             };
+ 
+             var update_model = new System.Action (() => {
+                 string search = search_entry.Query;
+                 bool? enabled = filter_combo.Active > 0 ? (bool?) (filter_combo.Active == 1 ? true : false) : null;
+                 model.Clear ();
+                 foreach (var cat in categorized_addins) {
+                     var cat_iter = model.AppendValues (false, false, String.Format ("<b>{0}</b>", GLib.Markup.EscapeText (cat.NameLocalized)), null);
+                     bool any = false;
+                     foreach (var a in cat.Addins.Matching (search)) {
+                         if (enabled == null || (a.Enabled == enabled.Value)) {
+                             model.AppendValues (cat_iter, true,
+                                 a.Enabled,
+                                 String.Format (
+                                     "<b>{0}</b>\n<small>{1}</small>",
+                                     GLib.Markup.EscapeText (Catalog.GetString (a.Name)),
+                                     GLib.Markup.EscapeText (Catalog.GetString (a.Description.Description))),
+                                 a
+                             );
+                             any = true;
+                         }
+                     }
+ 
+                     if (!any) {
+                         model.Remove (ref cat_iter);
+                     }
                  }
-             }
-             
-             QueueDraw ();
-             
-             return base.OnButtonPressEvent (evnt);
-         }
-         
-         protected override bool OnKeyPressEvent (Gdk.EventKey evnt)
-         {
-             int index = selected_index;
-         
-             switch (evnt.Key) {
-                  case Gdk.Key.Up:
-                  case Gdk.Key.uparrow:
-                      index--;
-                      if (index < 0) {
-                          index = 0;
-                      }
-                      break;
-                  case Gdk.Key.Down:
-                  case Gdk.Key.downarrow:
-                      index++;
-                      if (index > tiles.Count - 1) {
-                          index = tiles.Count - 1;
-                      }
-                      break;
-             }
-             
-             if (index != selected_index) {
-                 ClearSelection ();
-                 Select (index);
-                 return true;
-             }
-         
-             return base.OnKeyPressEvent (evnt);
+                 tree_view.ExpandAll ();
+             });
+ 
+             update_model ();
+             search_entry.Changed += (o, a) => update_model ();
+             filter_combo.Changed += (o, a) => update_model ();
+ 
+             var tree_scroll = new Gtk.ScrolledWindow () {
+                 HscrollbarPolicy = PolicyType.Never
+             };
+             tree_scroll.AddWithViewport (tree_view);
+ 
+             Spacing = 6;
+             PackStart (hbox, false, false, 0);
+             PackStart (tree_scroll, true, true, 0);
+             ShowAll ();
+             search_entry.InnerEntry.GrabFocus ();
+ 
+             txt_cell.WrapWidth = 300;
          }
-         
-         private void Select (int index)
+ 
+         private enum Columns : int {
+             IsAddin,
+             IsEnabled,
+             Name,
+             Addin
+         };
+     }
+ 
+     internal static class AddinExtensions
+     {
+         public static IEnumerable<Addin> Matching (this IEnumerable<Addin> addins, string search)
          {
-             if (index >= 0 && index < tiles.Count) {
-                 selected_index = index;
-                 tiles[index].Select (true);
-             } else {
-                 ClearSelection ();
-             }
-             
-             if (Parent != null && Parent.IsRealized) {
-                 Parent.GdkWindow.InvalidateRect (Parent.Allocation, true);
+             search = StringUtil.SearchKey (search);
+             if (String.IsNullOrEmpty (search)) {
+                 return addins;
              }
-             
-             QueueResize ();
+ 
+             return addins.Where (a => a.MatchStrings ().Any (s => {
+                 return StringUtil.SearchKey (s).Contains (search) ||
+                        StringUtil.SearchKey (Catalog.GetString (s)).Contains (search);
+             }));
          }
-         
-         private void ClearSelection ()
+ 
+         public static IEnumerable<string> MatchStrings (this Addin a)
          {
-             if (selected_index >= 0 && selected_index < tiles.Count) {
-                 tiles[selected_index].Select (false);
-             }
-             
-             selected_index = -1;
+             yield return a.Name;
+             yield return a.Description.Description;
+             yield return a.Description.Category;
          }
      }
  }
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ConfirmShutdownDialog.cs
index 6a98a31,013a600..ca71490
--- a/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ConfirmShutdownDialog.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ConfirmShutdownDialog.cs
@@@ -100,9 -99,9 +100,9 @@@ namespace Banshee.Gui.Dialog
                  if(!ListView.Model.IterNthChild(out iter, i)) {
                      break;
                  }
-                     
+ 
                  if(ListView.Model.GetValue(iter, 1) == job) {
 -                    Banshee.Base.ThreadAssist.ProxyToMain(delegate {
 +                    ThreadAssist.ProxyToMain(delegate {
                          (ListView.Model as ListStore).Remove(ref iter);
                      });
                      break;
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs
index b3724cc,d6223ad..b42fa42
--- a/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs
@@@ -55,9 -55,9 +55,9 @@@ namespace Banshee.Gui.Widget
          private uint update_delay_id;
          private uint progress_bounce_id;
          private object tooltips;
-         
+ 
 -        Banshee.Widgets.HigMessageDialog cancel_dialog;
 +        Hyena.Widgets.HigMessageDialog cancel_dialog;
-         
+ 
          public UserJobTile (Job job) : base (3, 2, false)
          {
              this.job = job;
@@@ -131,8 -131,8 +131,8 @@@
              if (ServiceManager.Contains<GtkElementsService> ()) {
                  parent = ServiceManager.Get<GtkElementsService> ().PrimaryWindow;
              }
-             
-             cancel_dialog = new Hyena.Widgets.HigMessageDialog (parent, 
+ 
 -            cancel_dialog = new Banshee.Widgets.HigMessageDialog (parent,
++            cancel_dialog = new Hyena.Widgets.HigMessageDialog (parent,
                  DialogFlags.Modal, MessageType.Question, ButtonsType.None,
                  job.Title == null
                      ? Catalog.GetString ("Stop Operation")
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs
index edcc920,105018e..31a8bc3
--- a/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs
@@@ -45,12 -45,12 +45,12 @@@ namespace Banshee.Gui.Widget
          private AnimatedVBox box;
          private Dictionary<Job, UserJobTile> job_tiles = new Dictionary<Job, UserJobTile> ();
          private Dictionary<Job, DateTime> job_start_times = new Dictionary<Job, DateTime> ();
-         
+ 
          public UserJobTileHost () : base (0.0f, 0.0f, 1.0f, 1.0f)
          {
 -            Banshee.Base.ThreadAssist.AssertInMainThread ();
 +            ThreadAssist.AssertInMainThread ();
              LeftPadding = 4;
-             
+ 
              box = new AnimatedVBox ();
              box.StartPadding = 8;
              box.Spacing = 8;
@@@ -79,9 -79,9 +79,9 @@@
                  if (job == null || job.IsFinished) {
                      return;
                  }
-                 
+ 
                  if ((job.DelayShow && job.Progress < 0.33) || !job.DelayShow) {
 -                    Banshee.Base.ThreadAssist.AssertInMainThread ();
 +                    ThreadAssist.AssertInMainThread ();
                      UserJobTile tile = new UserJobTile (job);
                      job_tiles.Add (job, tile);
                      job_start_times.Add (job, DateTime.Now);
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
index e1bbdf5,20edfac..fb76d61
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs
@@@ -49,8 -54,8 +49,8 @@@ namespace Banshee.Gu
              : this (ServiceManager.Get<InterfaceActionService> (), name)
          {
          }
-         
+ 
 -        public BansheeActionGroup (InterfaceActionService action_service, string name) : base (name)
 +        public BansheeActionGroup (InterfaceActionService action_service, string name) : base (action_service, name)
          {
              this.action_service = action_service;
          }
@@@ -89,7 -180,38 +89,7 @@@
                  }
              }
          }
-         
+ 
 -        public static void UpdateAction (Gtk.Action action, bool visible_and_sensitive)
 -        {
 -            UpdateAction (action, visible_and_sensitive, visible_and_sensitive);
 -        }
 -
 -        public static void UpdateAction (Gtk.Action action, bool visible, bool sensitive)
 -        {
 -            action.Visible = visible;
 -            action.Sensitive = visible && sensitive;
 -        }
 -
 -        protected void ShowContextMenu (string menu_name)
 -        {
 -            Gtk.Menu menu = Actions.UIManager.GetWidget (menu_name) as Menu;
 -            if (menu == null || menu.Children.Length == 0) {
 -                return;
 -            }
 -
 -            int visible_children = 0;
 -            foreach (Widget child in menu)
 -                if (child.Visible)
 -                    visible_children++;
 -
 -            if (visible_children == 0) {
 -                return;
 -            }
 -
 -            menu.Show ();
 -            menu.Popup (null, null, null, 0, Gtk.Global.CurrentEventTime);
 -        }
 -
          public InterfaceActionService Actions {
              get { return action_service; }
          }
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
index 44b0ee8,ff88c29..032a4e6
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
@@@ -108,9 -119,11 +119,12 @@@ namespace Banshee.Gu
              Gtk.Window.DefaultIconName = default_icon_name;
  
              ThreadAssist.InitializeMainThread ();
 +            ThreadAssist.ProxyToMainHandler = Banshee.ServiceStack.Application.Invoke;
-             
+ 
              Gdk.Global.ProgramClass = Application.InternalName;
+ #if HAVE_GLIBSHARP_2_12_7
+             GLib.Global.ApplicationName = "Banshee";
+ #endif
  
              if (ApplicationContext.Debugging) {
                  GLib.Log.SetLogHandler ("Gtk", GLib.LogLevelFlags.Critical, GLib.Log.PrintTraceLogFunction);
@@@ -208,10 -221,10 +222,10 @@@
                      mtype = Gtk.MessageType.Error;
                      break;
              }
-               
+ 
 -            Banshee.Widgets.HigMessageDialog dialog = new Banshee.Widgets.HigMessageDialog (
 +            Hyena.Widgets.HigMessageDialog dialog = new Hyena.Widgets.HigMessageDialog (
                  window, Gtk.DialogFlags.Modal, mtype, Gtk.ButtonsType.Close, entry.Message, entry.Details);
-             
+ 
              dialog.Title = String.Empty;
              dialog.Run ();
              dialog.Destroy ();
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
index cf4a5c1,a0ac3df..48d8a57
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
@@@ -52,12 -54,14 +52,12 @@@ namespace Banshee.Gu
          private PlaybackActions playback_actions;
          private TrackActions    track_actions;
          private SourceActions   source_actions;
-         
+ 
          private BansheeActionGroup active_source_actions;
          private uint active_source_uiid = 0;
-         
-         public InterfaceActionService () : base ()
+ 
+         public InterfaceActionService ()
          {
 -            ui_manager = new UIManager ();
 -
              ServiceManager.SourceManager.ActiveSourceChanged += OnActiveSourceChanged;
          }
  
@@@ -83,10 -179,10 +83,10 @@@
          private void OnActiveSourceChangedGui ()
          {
              if (active_source_uiid > 0) {
 -                ui_manager.RemoveUi (active_source_uiid);
 +                UIManager.RemoveUi (active_source_uiid);
                  active_source_uiid = 0;
              }
-                 
+ 
              if (active_source_actions != null) {
                  RemoveActionGroup (active_source_actions.Name);
                  active_source_actions = null;
@@@ -135,6 -231,29 +135,32 @@@
              }
          }
  
++<<<<<<< HEAD:src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
++=======
+         public uint AddUiFromFileInCurrentAssembly (string ui_file)
+         {
+             return AddUiFromFile (ui_file, Assembly.GetCallingAssembly ());
+         }
+ 
+         public uint AddUiFromFile (string ui_file, Assembly assembly)
+         {
+             if (ui_file != null) {
+                 using (StreamReader reader = new StreamReader (assembly.GetManifestResourceStream (ui_file))) {
+                     return ui_manager.AddUiFromString (reader.ReadToEnd ());
+                 }
+             }
+             return 0;
+         }
+ 
+         public Action this[string actionId] {
+             get { return FindAction (actionId); }
+         }
+ 
+         public UIManager UIManager {
+             get { return ui_manager; }
+         }
+ 
++>>>>>>> master:src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs
          public GlobalActions GlobalActions {
              get { return global_actions; }
          }
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs
index 824c26f,c0a3d88..4af7a7d
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs
@@@ -135,9 -135,9 +135,9 @@@ namespace Banshee.Gu
  
          private void HandleActiveSourceChanged (SourceEventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  UpdateActions ();
-                 
+ 
                  if (last_source != null) {
                      last_source.Updated -= HandleActiveSourceUpdated;
                  }
@@@ -152,10 -152,10 +152,10 @@@
          {
              UpdateActions ();
          }
-         
+ 
          private void HandleActiveSourceUpdated (object o, EventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  UpdateActions (true);
              });
          }
@@@ -409,8 -409,8 +409,8 @@@
              if (do_not_ask) {
                  return true;
              }
-         
+ 
 -            Banshee.Widgets.HigMessageDialog dialog = new Banshee.Widgets.HigMessageDialog (
 +            Hyena.Widgets.HigMessageDialog dialog = new Hyena.Widgets.HigMessageDialog (
                  ServiceManager.Get<GtkElementsService> ("GtkElementsService").PrimaryWindow,
                  Gtk.DialogFlags.Modal,
                  Gtk.MessageType.Question,
diff --cc src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
index 374e676,475883f..775f0d4
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs
@@@ -142,8 -140,8 +142,8 @@@ namespace Banshee.Gu
                  new_source.TrackModel.Selection.Changed += HandleSelectionChanged;
                  current_source = new_source;
              }
-             
+ 
 -            Banshee.Base.ThreadAssist.ProxyToMain (UpdateActions);
 +            ThreadAssist.ProxyToMain (UpdateActions);
          }
  
          private void HandleActionsChanged (object sender, EventArgs args)
diff --cc src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs
index 838c63e,722abcd..6df7fc5
--- a/src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs
@@@ -31,8 -31,9 +31,11 @@@ using System.Collections.Generic
  using Gtk;
  using Glade;
  
 +using Hyena;
 +
+ using Mono.Unix;
+ 
+ using Banshee.Configuration.Schema;
  using Banshee.Sources;
  using Banshee.ServiceStack;
  using Banshee.Gui;
diff --cc src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs
index 0b22597,866a6c4..126f132
--- a/src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs
@@@ -5,10 -5,9 +5,10 @@@ using Glade
  
  using Mono.Unix;
  
 +using Hyena;
  using Hyena.Query;
  using Hyena.Query.Gui;
-  
+ 
  using Banshee.Base;
  using Banshee.Query;
  using Banshee.ServiceStack;
diff --cc src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs
index 5dbacfd,8e7c30e..f4e32d2
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs
@@@ -131,9 -130,9 +131,9 @@@ namespace Banshee.Sources.Gu
                  (action_service.FindAction("BrowserView.BrowserTopAction") as RadioAction).Changed += OnViewModeChanged;
                  action_service.FindAction("BrowserView.BrowserVisibleAction").Activated += OnToggleBrowser;
              }
-             
+ 
              ServiceManager.SourceManager.ActiveSourceChanged += delegate {
 -                Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +                ThreadAssist.ProxyToMain (delegate {
                      browser_container.Visible = ActiveSourceCanHasBrowser ? BrowserVisible.Get () : false;
                  });
              };
diff --cc src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceComboBox.cs
index f166aa1,2e9b945..590620f
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceComboBox.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceComboBox.cs
@@@ -46,21 -44,21 +46,21 @@@ namespace Banshee.Sources.Gu
              renderer.ParentWidget = this;
              PackStart (renderer, true);
              SetCellDataFunc (renderer, new CellLayoutDataFunc (SourceRowRenderer.CellDataHandler));
-             
+ 
              store = new SourceModel ();
              Model = store;
-             
-             ServiceManager.SourceManager.ActiveSourceChanged += delegate { 
+ 
+             ServiceManager.SourceManager.ActiveSourceChanged += delegate {
 -                Banshee.Base.ThreadAssist.ProxyToMain (UpdateActiveSource);
 +                ThreadAssist.ProxyToMain (UpdateActiveSource);
              };
-             
+ 
              ServiceManager.SourceManager.SourceUpdated += delegate {
-                 ThreadAssist.ProxyToMain (QueueDraw);                    
 -                Banshee.Base.ThreadAssist.ProxyToMain (QueueDraw);
++                ThreadAssist.ProxyToMain (QueueDraw);
              };
-             
+ 
              store.Refresh ();
          }
-         
+ 
          public void UpdateActiveSource ()
          {
              lock (this) {
diff --cc src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceModel.cs
index a81a9e7,c61865b..62fcb72
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceModel.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceModel.cs
@@@ -86,17 -84,17 +86,17 @@@ namespace Banshee.Sources.Gu
              ServiceManager.SourceManager.SourceRemoved -= OnSourceRemoved;
              base.Dispose ();
          }
-         
+ 
          private void OnSourceAdded (SourceAddedArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  AddSource (args.Source);
              });
          }
-         
+ 
          private void OnSourceRemoved (SourceEventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  RemoveSource (args.Source);
              });
          }
@@@ -268,17 -266,17 +268,17 @@@
                  AddSource (source);
              }
          }
-         
+ 
          private void OnSourceChildSourceAdded (SourceEventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  AddSource (args.Source, FindSource (args.Source.Parent));
              });
          }
-         
+ 
          private void OnSourceChildSourceRemoved (SourceEventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  RemoveSource (args.Source);
              });
          }
diff --cc src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs
index e41e309,a245b42..2586b27
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs
@@@ -104,11 -105,11 +106,11 @@@ namespace Banshee.Sources.Gu
          private void ConnectEvents ()
          {
              ServiceManager.SourceManager.ActiveSourceChanged += delegate (SourceEventArgs args) {
 -                Banshee.Base.ThreadAssist.ProxyToMain (ResetSelection);
 +                ThreadAssist.ProxyToMain (ResetSelection);
              };
-             
+ 
              ServiceManager.SourceManager.SourceUpdated += delegate (SourceEventArgs args) {
 -                Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +                ThreadAssist.ProxyToMain (delegate {
                      lock (args.Source) {
                          TreeIter iter = store.FindSource (args.Source);
                          if (!TreeIter.Zero.Equals (iter)) {
@@@ -118,13 -119,13 +120,13 @@@
                      }
                  });
              };
-             
+ 
              ServiceManager.PlaybackController.NextSourceChanged += delegate {
 -                Banshee.Base.ThreadAssist.ProxyToMain (QueueDraw);
 +                ThreadAssist.ProxyToMain (QueueDraw);
              };
-             
+ 
              notify_stage.ActorStep += delegate (Actor<TreeIter> actor) {
 -                Banshee.Base.ThreadAssist.AssertInMainThread ();
 +                ThreadAssist.AssertInMainThread ();
                  if (!store.IterIsValid (actor.Target)) {
                      return false;
                  }
@@@ -335,10 -336,10 +337,10 @@@
              TreePath path = store.GetPath (iter);
              ExpandRow (path, true);
          }
-         
+ 
          private void OnSourceUserNotifyUpdated (object o, EventArgs args)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  TreeIter iter = store.FindSource ((Source)o);
                  if (iter.Equals (TreeIter.Zero)) {
                      return;
diff --cc src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs
index c729704,6fd148e..7a62e3c
--- a/src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs
+++ b/src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs
@@@ -97,10 -96,13 +97,13 @@@ namespace Banshee.Dap.Gu
                  ? Catalog.GetString ("None")
                  : new Hyena.Query.FileSizeQueryValue (size).ToUserQuery ();
          }
-         
+ 
          private void OnSourceUpdated (object o, EventArgs args)
          {
+             if (source.Sync.Syncing)
+                 return;
+ 
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  try {
                      UpdateUsage ();
                  } catch (Exception e) {
diff --cc src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
index 3a8258d,e487721..dd3395e
--- a/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
+++ b/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
@@@ -91,17 -90,17 +91,17 @@@ namespace Banshee.CoverAr
              if (action_service == null || ServiceManager.SourceManager.MusicLibrary == null) {
                  return false;
              }
-             
+ 
              Initialize ();
-             
+ 
              return true;
          }
-         
+ 
          private void Initialize ()
-         {            
+         {
 -            Banshee.Base.ThreadAssist.AssertInMainThread ();
 +            ThreadAssist.AssertInMainThread ();
              actions = new ActionGroup ("CoverArt");
-             
+ 
              ActionEntry[] action_list = new ActionEntry [] {
                  new ActionEntry ("CoverArtAction", null,
                      Catalog.GetString ("_Cover Art"), null,
diff --cc src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs
index aeab42d,c1f1748..4f2084d
--- a/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs
+++ b/src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs
@@@ -73,25 -73,25 +73,25 @@@ namespace Banshee.FileSystemQueu
                      Catalog.GetString ("Remove all tracks from the file system queue"),
                      OnClearFileSystemQueue)
              );
-             
+ 
              uia_service.GlobalActions.Add (new ToggleActionEntry [] {
                  new ToggleActionEntry ("ClearFileSystemQueueOnQuitAction", null,
-                     Catalog.GetString ("Clear on Quit"), null, 
-                     Catalog.GetString ("Clear the file system queue when quitting"), 
+                     Catalog.GetString ("Clear on Quit"), null,
+                     Catalog.GetString ("Clear the file system queue when quitting"),
                      OnClearFileSystemQueueOnQuit, ClearOnQuitSchema.Get ())
              });
-             
+ 
              uia_service.UIManager.AddUiFromResource ("GlobalUI.xml");
-             
+ 
              Properties.SetString ("ActiveSourceUIResource", "ActiveSourceUI.xml");
              Properties.SetString ("GtkActionPath", "/FileSystemQueueContextMenu");
-             
+ 
              actions_loaded = true;
-             
+ 
              UpdateActions ();
 -            ServiceManager.SourceManager.ActiveSourceChanged += delegate { Banshee.Base.ThreadAssist.ProxyToMain (UpdateActions); };
 +            ServiceManager.SourceManager.ActiveSourceChanged += delegate { ThreadAssist.ProxyToMain (UpdateActions); };
              TrackModel.Reloaded += OnTrackModelReloaded;
-             
+ 
              Reload ();
  
              play_enqueued = ApplicationContext.CommandLine.Contains ("play-enqueued");
diff --cc src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Recommendations/RecommendationPane.cs
index 8c846f5,dca4ebe..1726a57
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Recommendations/RecommendationPane.cs
+++ b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Recommendations/RecommendationPane.cs
@@@ -265,14 -265,14 +265,14 @@@ namespace Banshee.Lastfm.Recommendation
                  Log.Exception (e);
              }
          }
-         
-         private void UpdateForArtist (string artist_name, LastfmData<SimilarArtist> similar_artists, 
+ 
+         private void UpdateForArtist (string artist_name, LastfmData<SimilarArtist> similar_artists,
              LastfmData<ArtistTopAlbum> top_albums, LastfmData<ArtistTopTrack> top_tracks)
          {
 -            Banshee.Base.ThreadAssist.ProxyToMain (delegate {
 +            ThreadAssist.ProxyToMain (delegate {
                  album_box.Title = String.Format (album_title_format, artist);
                  track_box.Title = String.Format (track_title_format, artist);
-                 
+ 
                  similar_artists_view.ClearWidgets ();
                  ClearBox (album_list);
                  ClearBox (track_list);
diff --cc src/Libraries/Hyena.Gui/Hyena.Gui/DragDropList.cs
index 4a89dea,5525d8f..d3d297a
--- a/src/Libraries/Hyena.Gui/Hyena.Gui/DragDropList.cs
+++ b/src/Libraries/Hyena.Gui/Hyena.Gui/DragDropList.cs
@@@ -33,8 -33,8 +33,8 @@@ using System.Collections.Generic
  using System.Runtime.InteropServices;
  using Gtk;
  
 -namespace Banshee.Gui.DragDrop
 +namespace Hyena.Gui
- {   
+ {
      public class DragDropList<T> : List<T>
      {
          public DragDropList() : base()
diff --cc src/Libraries/Hyena.Gui/Hyena.Widgets/HigMessageDialog.cs
index 15910cc,c945774..338dc8e
--- a/src/Libraries/Hyena.Gui/Hyena.Widgets/HigMessageDialog.cs
+++ b/src/Libraries/Hyena.Gui/Hyena.Widgets/HigMessageDialog.cs
@@@ -1,38 -1,35 +1,37 @@@
 -
 -/***************************************************************************
 - *  HigMessageDialog.cs
 - ****************************************************************************/
 -
 -/*  THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
 - *
 - *  Permission is hereby granted, free of charge, to any person obtaining a
 - *  copy of this software and associated documentation files (the "Software"),
 - *  to deal in the Software without restriction, including without limitation
 - *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
 - *  and/or sell copies of the Software, and to permit persons to whom the
 - *  Software is furnished to do so, subject to the following conditions:
 - *
 - *  The above copyright notice and this permission notice shall be included in
 - *  all copies or substantial portions of the Software.
 - *
 - *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 - *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 - *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 - *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 - *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 - *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 - *  DEALINGS IN THE SOFTWARE.
 - */
 +//
 +// HigMessageDialog.cs
 +//
 +// Authors:
 +//   Aaron Bockover <abockover novell com>
 +//
 +// Copyright (C) 2007 Novell, Inc.
 +//
 +// Permission is hereby granted, free of charge, to any person obtaining
 +// a copy of this software and associated documentation files (the
 +// "Software"), to deal in the Software without restriction, including
 +// without limitation the rights to use, copy, modify, merge, publish,
 +// distribute, sublicense, and/or sell copies of the Software, and to
 +// permit persons to whom the Software is furnished to do so, subject to
 +// the following conditions:
 +//
 +// The above copyright notice and this permission notice shall be
 +// included in all copies or substantial portions of the Software.
 +//
 +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 +//
-  
+ 
  using System;
  
 -namespace Banshee.Widgets
 +namespace Hyena.Widgets
  {
      public class HigMessageDialog : Gtk.Dialog
-     {    
-         private Gtk.AccelGroup accel_group;
+     {
          private Gtk.Image image;
          private Gtk.VBox label_vbox;
          private Gtk.Label message_label;
diff --cc src/Libraries/Hyena.Gui/Makefile.am
index 6ef948d,e458867..ce3f55a
--- a/src/Libraries/Hyena.Gui/Makefile.am
+++ b/src/Libraries/Hyena.Gui/Makefile.am
@@@ -80,8 -86,7 +89,9 @@@ SOURCES =  
  	Hyena.Widgets/AnimatedVBox.cs \
  	Hyena.Widgets/AnimatedWidget.cs \
  	Hyena.Widgets/ComplexMenuItem.cs \
 +	Hyena.Widgets/GenericToolItem.cs \
 +	Hyena.Widgets/HigMessageDialog.cs \
+ 	Hyena.Widgets/EntryPopup.cs \
  	Hyena.Widgets/ImageButton.cs \
  	Hyena.Widgets/MenuButton.cs \
  	Hyena.Widgets/MessageBar.cs \
diff --cc src/Libraries/Hyena/Hyena.Collections/LruCache.cs
index b644bea,dae70dc..ef80b23
--- a/src/Libraries/Hyena/Hyena.Collections/LruCache.cs
+++ b/src/Libraries/Hyena/Hyena.Collections/LruCache.cs
@@@ -61,15 -58,10 +61,15 @@@ namespace Hyena.Collection
          public LruCache () : this (1024)
          {
          }
-         
+ 
 -        public LruCache (int maxCount)
 +        public LruCache (int maxCount) : this (maxCount, null)
 +        {
 +        }
 +
 +        public LruCache (int maxCount, double? minimumHitRatio)
          {
              max_count = maxCount;
 +            minimum_hit_ratio = minimumHitRatio;
              cache = new Dictionary<TKey, CacheEntry<TKey, TValue>> ();
          }
  
@@@ -88,9 -80,6 +88,9 @@@
                  Ref (ref entry);
                  cache.Add (key, entry);
  
 +                misses++;
 +                EnsureMinimumHitRatio ();
-                 
++
                  if (Count >= max_count) {
                      TKey expire = FindOldestEntry ();
                      ExpireItem (cache[expire].Value);
@@@ -124,24 -113,14 +124,24 @@@
                      value = entry.Value;
                      Ref (ref entry);
                      cache[key] = entry;
 +                    hits++;
                      return true;
                  }
-                 
+ 
 +                misses++;
 +                EnsureMinimumHitRatio ();
                  value = default (TValue);
                  return false;
              }
          }
  
 +        private void EnsureMinimumHitRatio ()
 +        {
 +            if (minimum_hit_ratio != null && Count >= MaxCount && HitRatio < minimum_hit_ratio) {
 +                MaxCount = Count + 1;
 +            }
 +        }
-         
++
          private void Ref (ref CacheEntry<TKey, TValue> entry)
          {
              entry.LastUsed = DateTime.Now;
diff --cc src/Libraries/Hyena/Hyena/UndoManager.cs
index 95d6719,810d4cb..f702a77
--- a/src/Libraries/Hyena/Hyena/UndoManager.cs
+++ b/src/Libraries/Hyena/Hyena/UndoManager.cs
@@@ -124,24 -128,8 +124,24 @@@ namespace Hyen
              get { return undo_stack.Count > 0; }
          }
  
-         public bool CanRedo { 
+         public bool CanRedo {
              get { return redo_stack.Count > 0; }
          }
 +
 +        public IUndoAction UndoAction {
 +            get {
 +                lock (this) {
 +                    return CanUndo ? undo_stack.Peek () : null;
 +                }
 +            }
 +        }
 +
 +        public IUndoAction RedoAction {
 +            get {
 +                lock (this) {
 +                    return CanRedo ? redo_stack.Peek () : null;
 +                }
 +            }
 +        }
      }
  }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]