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.
Paths: add new SwitchRoot method

This method will be used to switch the mount point of a path with a
different one. Example:

 SwitchRoot ("/foo/bar/", "/foo", "/baz") == "/baz/bar"

First usage of it will be in Banshee, in an upcoming
patch for N95 playlists support (bgo#661507).
ListView: Do not enable a11y when it would cause freezes (bgo#696111)

Recent versions of glib or gobject (2.35.4 and above) don't allow
anymore to add GInterfaces after class initialization, which causes the
Mono binding to fail when implementing interfaces in managed land (filed
in https://bugzilla.xamarin.com/show_bug.cgi?id=11510).

We're  affected by this particularly when implementing the AtkTable
interface for the accessibility support of the ListView custom widget.
The consequence would be that the class would not implement the
interface properly, which would cause lots of exceptions in
OnCreateAccessible signals, high CPU usage and make the app hang.

The workaround for now is create a dummy instance of ListViewAccessible
class, and not enable accessibility if any exception is caught at
creation time.

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
Sqlite: Return rowid values as long instead of int (bgo#696520)

When the command type is "execute", the result is the rowid of the last
inserted row (connection.LastInsertRowId), which is a long.

We now return the value as a long, instead of converting it to an int
ourselves, and throwing an exception when the value is above
Int32.MaxValue.

In SQLite, a column defined as INTEGER PRIMARY KEY is used as the rowid,
so it should now be handled as a long.

As a consequence, for a class using SqliteModelProvider, the member
marked as the primary key must be a long. Previously, it was assumed to
be assignable from an int, so we add a specific runtime check for that.