QueryField: check for NULL before LIKE

When getting the SQL result of crossing a QueryField
with a QueryValue, the check for NULL was being printed
after the rest of the query.

In theory, the check for NULL should be done before so
you really gain the performance of only running one part
of the query in case the first part is already TRUE (OR
operator) or FALSE (AND operator). Maybe SQLite was
already smart enough to optimize this regardless, but
the query is anyway clearer now.

It is now also more in line with the .NET API:
String.IsNullOrEmpty()
Query: fix FileLocation queries for the StartsWith operator

In the same way user queries were already being escaped [1] so
the user didn't need to do it manually (i.e. when creating a
Smart Playlist in Banshee), hyena should be smart enough to add
the file scheme to the value queried in case the operator
StartsWith is used, so the Uri is correctly formed in the LIKE
filter. Fixes bgo#644145.

[1] http://mail.gnome.org/archives/commits-list/2010-March/msg02864.html
Log: Catch exceptions when trying to redirect log output on Windows

Exceptions when trying to redirect standard output to a file are
now caught and logged to standard error. Fixes bgo#644270.

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
Log: Remove obsolete FIXME comment
RatingRenderer: Restore the state of the Cairo Context after rendering

This allows callers to use the Context after passing it to the Render
method, without having to save its state themselves.
build: enable Makefile integration in .csproj files

Enable the default build target in the Makefile integration
settings of csproj files. This allows developers to build
Hyena/Banshee straight away within MonoDevelop (after
running autogen.sh) without the need to tweak any settings.
build: Remove unnecessary parameters to dll-map-verifier.exe

Those parameters tell dll-map-verifier.exe which native libraries to
ignore. We can just remove those Hyena doesn't actually depend on, to
prevent any confusion.
build: Add the .config files to the csproj

Also copy the .config files to the output folder.
SafeUri: rename parameter to be less confusing

The ctor overload that accepts both file names and URIs via string
has a second bool parameter 'isUri' to distinguish them, therefore
it is confusing to call the first parameter just "uri".

This commits renames it to "uriOrFilename".
Gui.Canvas.Rect: log invalid values for Width/Height (bgo#624976)

In the same vein as other hard to reproduce bugs, logging the exception
and adjusting in the safest way possible can make hyena consumers (Banshee
in this case) not crash.

(Again, not ideal, but if the user reports success, it is better than
not having this partial fix.)

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
Gui.Canvas.Size: log invalid values for Width/Height (bgo#661112)

In the same vein as other hard to reproduce bugs, logging the exception
and adjusting in the safest way possible can make hyena consumers (Banshee
in this case) not crash.

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
ListViewAccessible: replace dynamic cast with static cast

This cast may be the culprit of the cryptic exception raised
which causes bgo#683498. Hopefully the reporter will be able
to test again after this change to check if now an
InvalidCastException is raised, or if what really happens is
that the Parent property of the ListView is null.
a11y: Fix a NullReferenceException in ListViewAccessible (bgo#683498)

Even though the user claims to set a11y as disabled, this
nullreference was still happening somehow.

The null check makes the problem go away. Thanks Andy Goar for testing!
Paths: (GetExecPaths) do not hardcode unix path separator char, use a const

In a similar way we do it in Banshee.IO.Directory:
http://git.gnome.org/browse/banshee/tree/src/Core/Banshee.Core/Banshee.IO/Directory.cs#n38
Paths: mark class as static

All its members all static so we can mark the class as static too.
(It wouldn't make sense that this class would be instantiated.)

No change of behaviour in this commit.
Paths: bring some path normalization operations between platforms

These operations are being used in Banshee's playlist code currently,
but it makes more sense to encapsulate them as functions and leave them
in the Hyena.Paths namespace, in a similar way as Paths.MakePathRelative()
which is also used in the same class.
Merge branch 'master' into gtk3