Replace changed URIs properly in playlists

When files in monitored directories change the BlaPlaylist class needs
to update its `uris' dict in order to display the proper metadata from
the library. For that we need to swap keys and values of the dictionary
which previously caused a bug where IDs were dropped due to
non-uniqueness of values in the dict. The new solution uses numpy arrays
for convenience.

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Simplify regexp's used in bladb.py

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
BlaPlayer: don't use idle_add in message callbacks

The `message' signal callback was previously decorated with blautil.idle
to push the execution to the main thread. According to the docs,
however, the signal on the bus is already emitted from the main thread
making the decorator redundant. Additionally, this commit adds two
context managers around gtk calls which deadlocked blaplay in the past.

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Save the config after a 60 minutes timeout

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Add regexp support for playlist filtering

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Store and restore positions of every window

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Move regexp filter button

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Remove __hidden flag in BlaMainWindow class

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Don't initialize GTK's threading support

The call to gtk.gdk.threads_init() was removed. This call instructs the gtk
main loop to release the gdk lock after each iteration so it can be
acquired by other threads than the main one. However, since we only
make gtk calls in the main thread anyway this would require us to grab
the lock every time. With this change we don't need to worry about
having the lock at all as the main thread never releases it in the first
place.

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Change timeout for saving blacfg to 30 minutes

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>
Reorganize window state tracking

Signed-off-by: Niklas Koep <niklas.koep@gmail.com>