When menu->reposition is called, only the HUD windows were moved to
their new positions. The auxiliary windows used for mucked cards
remained where they were at the time the HUD instance was created. This
caused mucked cards to appear in wrong places after the poker table was
moved.
Split positioning code in Mucked.py to its own method. Now the same
routine that moves HUD windows to their new places also invokes code
to reposition auxiliary windows.
Now the mucked cards are displayed at correct screen coordinates too.
It is not enough to use actual system locale in just one spot if all
the other encodings are hard-coded to latin1. Now that we have the real
locale available, do all string conversions [.encode($locale)] with
that.
Do we really need that annoying error note about table viewer not
working any longer? It's useless with postgres backend anyhow, so might
as well kill it off entirely.
Simplify error check, so that regardless of how the table name is
mangled, we now catch just the meaningful part.
When trying to obtain the lock, make sure that there is no transaction
block open (which tends to happen on error-paths); flush the database
connection before requesting exclusive lock.
The error message from postgres contains the said table as written in
original command. 'Players' != 'players', indeed. Now software can at
least start with postgres and an empty database.
If database backend is Postgres and the connection is over domain
socket, the only values in <database> node are:
* db_name
* db_server
* db_type
Now, for some reason the config reader unconditionally creates "tidy"
string representations for all possible keys. This means that
host, user and password are all empty strings (''), and not even
NoneType entities.
To catch the case for postgres, simply treat empty host the same as
undefined host.