Use the "Anonymous Cards" image from openclipart.org
(http://openclipart.org/media/files/Anonymous/12230)
This same image is used in other new FPDB icons, but the combinations
with looking-glass don't look good in systray. This icon is plain enough
to work properly even when scaled really small.
Since we deal with minimize/expose/show/hide routines ourselves, we
don't want these signals passed any further.
NOTE: if no return type is specified, it is automatically None which
usually is translated to False. That might trigger some weird behaviour,
up to and including rare and hard to reproduce GTK crashes.
PostgreSQL does automatic argument conversion/formatting when dealing
with timestamps. This simplification allows the session stats to be
generated with PostgreSQL as db backend.
Modified:
* Mucked.py
When running from outside source tree, the image containing mucked
cards' faces could not be loaded. Provide an extra path to load from.
Affected files:
* Configuration.py
* Database.py
* HandHistoryConverter.py
* fpdb_import.py
and setup.py to a lesser extent.
Logging requires a configuration file when initialising the class. If we
are executing from outside the source tree, this file is not present.
Catch config parser's error and try to provide the logging config file
from debian package path.
Update symlink target to match python-support from latest Debian and the
oncoming Ubuntu versions.
Modified files:
* Configuration.py
* HUD_config.xml.example
* HUD_main.py
Instead of tweaking aggregation settings directly in code, make the
values configurable through HUD_config.xml; use the newly created
<hud_ui> element for this. Retain coding convention and key-value
names as they are.
By default the hud positions a little box on top-left corner of each
table. Make the text in this box user-modifiable without touching the
source.
Most likely useful for active users and those who play with smaller
tables. On shrunk table the default box may cover some of the players'
cards.
Conflicts:
pyfpdb/Database.py
Resolve by reverting to sqlcoder's version; it uses the nice insert in
fillDefaultData for each case now and having the DB backends separate
might be good for the foreseeable future.
Database.py : fillDefaultData()
Remove manual 'id' from INSERT command. In database schema,
TourneyTypes.id is a primary key and thus autoincrement. In postgres,
autoincrements are implemented as sequences - inserting a value
"manually" bypasses the sequence generation, which resulted in a
remarkably weird error.
Namely, upon the first hand to import, the insert fails due to primary
key violation. The default value from an unused sequence is 1, but a
row with such an id already exists.
The solution is to create the single row of default data values with
unspecified TourneyTypes.id, hence allowing postgres to generate the
correct id from the sequence. This way the import works again.
Database.py : fillDefaultData()
Sql-coder had fixed the default data insert, and in the process changed
the default type ID. Since his works in general case, I can remove my
modifications.
* Database.py : fillDefaultData()
PostgreSQL has a rather annoying (mis)feature when dealing with boolean
data types: raw 1/0 input as integer is not automatically cast to
boolean values. Instead, one must use one of several other ways of
signifying true/false.
http://www.postgresql.org/docs/8.4/static/datatype-boolean.html
documents the available and understood formatting.
Fix by special-casing PostgreSQL and making all boolean values fed as
strings, '1' for true and '0' for false.
PostgreSQL does not have an UNSIGNED specifier in its language.
Mysql's "TINYINT UNSIGNED" is postgreSQL's "SMALLINT" which is a bit
inconvenient but apart from annoying, not a problem.
Hud's noop() is called from gtk event handler, which passes
additional arguments. We don't care about them but we do want to prevent
HUD-error.txt from being flooded with TypeError messages.
* It seems that fpdb gets installed into /usr/share/python-support/
while many other packages end up in .../pyshared; fixed the symlink
target
* Fixed mail address in changelog, which now is the correct one
* Added postinst script to make fpdb.py executable again. This hack
is needed because dh_fixperms didn't allow to ignore the script's
permissions and the file is located in .../fpdb/ along with all the
other fpdb modules
* Told package manager to create /usr/bin/fpdb symlink pointing to
fpdb.py so we now have an application named "fpdb" in the system
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.