Merge branch 'sorrow' into chazdazzle

This commit is contained in:
Chaz Littlejohn 2011-03-22 02:21:15 +00:00
commit 5f63bc1cca
65 changed files with 8945 additions and 1781 deletions

View File

@ -0,0 +1,125 @@
Create MySqlPython version 1.2.3 windows installer for Python26
This walkthrough is derived from excellent installation instructions released under GNU Free Documentation License 1.2. The original work is here ... http://www.bcspcsonline.com/wiki/index.php?title=MySQL-5.1.34_Python-2.6_Module_Build_Instructions The Wiki author appears to be "Irondesk"
This version by Gimick on 29th June 2010
Content is available under GNU Free Documentation License 1.2
Premamble
---------
The FPDB exe needs to build against the MySql-Python project. Unfortunately, for python 2.6 there is no official installer for windows, and none is ever likely to be provided.
Community builds are available, but to reduce third-party dependencies, we will build our own here.
Step 0 Get a fresh XP installation
----------------------------------
0.1/ Using XPhome 32bit
Step 1, VisualStudio 2008 express install
-----------------------------------------
1.1/ Get the ISO CD from here ... http://www.microsoft.com/express/Downloads/#2008-All
1.2/ Run and install Visual C++ only, don't bother with the additional packages offered
This package will run 30 days before registration is needed
Step 2, setup Mysql Server
--------------------------
2.1/ Install MySQL server runtime ... http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.34-win32.msi
Choose Typical, choose configure, choose Standard Configuration, choose all defaults, supply admin username/password.
Step 3, more installs
----------------------
3.1/ install the following in sequence (accept all default options) there should be no errors !
Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi
7zip 914 ... http://sourceforge.net/projects/sevenzip/files/7-Zip/9.14/7z914.exe/download
Step 4, grab Mysql server Source
--------------------------------
4.1/ Download ... http://downloads.mysql.com/archives/mysql-5.1/mysql-noinstall-5.1.34-win32.zip
4.2/ Unpacking Desktop\mysqlsource (use 7zip)
4.3/ Copy the following source directories to the MySql installation:
dos> xcopy Desktop\mysqlsource\mysql-5.1.34-win32\data\* "c:\Program Files\MySQL\MySQL Server 5.1\data" /I/E/F/H
dos> xcopy Desktop\mysqlsource\mysql-5.1.34-win32\Embedded\* "c:\Program Files\MySQL\MySQL Server 5.1\Embedded" /I/E/F/H
dos> xcopy Desktop\mysqlsource\mysql-5.1.34-win32\include\* "c:\Program Files\MySQL\MySQL Server 5.1\include" /I/E/F/H
dos> xcopy Desktop\mysqlsource\mysql-5.1.34-win32\lib\* "c:\Program Files\MySQL\MySQL Server 5.1\lib" /I/E/F/H
dos> xcopy Desktop\mysqlsource\mysql-5.1.34-win32\mysql-test\* "c:\Program Files\MySQL\MySQL Server 5.1\mysql-test" /I/E/F/H
dos> xcopy Desktop\mysqlsource\mysql-5.1.34-win32\sql-bench\* "c:\Program Files\MySQL\MySQL Server 5.1\sql-bench" /I/E/F/H
4.4/ You can delete Destop\mysqlsource, is no longer needed.
Step 5, grab Mysql-python source
--------------------------------
5.1/ get download
MySql for python ... http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download
5.2/ extract MySQL-python-1.2.3 directory to the Desktop using 7zip
(note: use 7zip, open the gz, then open the tar, then extract the directory found inside there)
Desktop\MySQL-python-1.2.3 should now exist
Step 6, get python build tools
------------------------------
6.1/ get Easy Setup installer
Easy setup installer ... http://peak.telecommunity.com/dist/ez_setup.py
6.2/ Check the DEFAULT VERSION specified in Easy Setup and get the corresponding setuptools (version c11 in this case)
Setuptools version 11 ... http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
6.3/ Put both of these files into Desktop\MySQL-python-1.2.3, overwriting any existing files
Step 7, install the build tool
------------------------------
dos> cd Desktop\MySQL-python-1.2.3
dos> c:\Python27\python.exe ez_setup.py setuptools-0.6c11-py2.7.egg
Step 8, Tweak the configuration
-------------------------------
dos> cd Desktop\MySQL-python-1.2.3
8.1/ dos> write site.cfg
Change registry_key = SOFTWARE\MySQL AB\MySQL Server 5.0
to registry_key = SOFTWARE\MySQL AB\MySQL Server 5.1
Step 9, build
-------------
dos> cd Desktop\MySQL-python-1.2.3
9.1/ dos> c:\python27\python.exe setup.py build
* Note: You will probably get a bunch of warnings and maybe a manifest error status 31, these are ok as long as there are no errors in compiling or linking.
* Note: This will generate the "MySQL-python-1.2.3/build" folder
9.2/ dos> c:\python27\python.exe setup.py bdist_wininst
Step 10, done
-------------
10.1/ the \dist directory will contain MySQL-python-1.2.3.win32-py2.7.exe !!!!!
10.2/ upload this file to sourceforge

View File

@ -1,16 +1,24 @@
This is a list of download links of Windows packages for Python 2.7 of our dependencies.
This is a list of download links of Windows32 packages for Python 2.7 of our dependencies.
These are as of 26Feb2011:
matplotlib 1.0.1 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.0.1/
pygtk 2.22 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/
pycairo 1.8.10 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/
pyGobject X ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.26/
These are as of 27Feb2011:
The below are from Aug2010, and should probably be updated to newer versions:
Required:
Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi
pywin 214 ... https://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.7.exe/download
py2exe 0.6.9 ... https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download
psycopg2 ... http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.2.2.win32-py2.7-pg8.4.4-release.exe
gtk+ allinone... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.22/gtk+-bundle_2.22.1-20101227_win32.zip
matplotlib 1.0.1 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.0.1/matplotlib-1.0.1.win32-py2.7.exe/download
pygtk 2.22 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/pygtk-2.22.0-1.win32-py2.7.exe
pycairo 1.8.10 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.10.win32-py2.7.exe
pyGobject X ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.26/pygobject-2.26.0-1.win32-py2.7.exe
pywin 216 ... http://sourceforge.net/projects/pywin32/files/pywin32/Build216/pywin32-216.win32-py2.7.exe/download
numpy 1.5.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/numpy-1.5.1-win32-superpack-python2.7.exe/download
pypokereval 138 ... http://sourceforge.net/projects/fpdb/files/fpdb/pokereval-138.win32-py2.7.exe/download
optional:
cdecimal 2.2 ... http://www.bytereef.org/software/mpdecimal/releases/cdecimal-2.2.win32-py2.7.msi
mysql-python 1.2.3 ... http://sourceforge.net/projects/fpdb/files/fpdb/MySQL-python-1.2.3.win32-py2.7.exe/download
psycopg2 ... http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.3.1.win32-py2.7-pg9.0.1-release.exe
Developers only:
py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download

View File

@ -0,0 +1,229 @@
PY2EXE walkthrough for Python 2.7 & FPDB 0.2x
created on 27th Feb 2011 by Gimick
This walkthrough is derived from comments in the py2exe script made by Ray and SqlCoder
Additional information, formatting, updating to Python 2.6 and Python 2.7 and sequencing added by Gimick
Content is available under the the GNU Affero General Public License version 3
Step 0 Get a fresh XP installation
----------------------------------
0.1/ Using XPhome or Pro 32bit
0.2/ Ensure the CPU supports SSE2 instruction set or better.
Step 1, dependency install
--------------------------
1.1/ install the following in sequence (accept all default options) there should be no errors !
Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi
matplotlib 1.0.1 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.0.1/matplotlib-1.0.1.win32-py2.7.exe/download
pygtk 2.22 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/pygtk-2.22.0-1.win32-py2.7.exe
pycairo 1.8.10 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.10.win32-py2.7.exe
pyGobject X 2.26 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.26/pygobject-2.26.0-1.win32-py2.7.exe
pywin 216 ... http://sourceforge.net/projects/pywin32/files/pywin32/Build216/pywin32-216.win32-py2.7.exe/download
pypokereval 138 ... http://sourceforge.net/projects/fpdb/files/fpdb/pokereval-138.win32-py2.7.exe/download
cdecimal 2.2 ... http://www.bytereef.org/software/mpdecimal/releases/cdecimal-2.2.win32-py2.7.msi
psycopg2 ... http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.2.1.win32-py2.6-pg8.4.3-release.exe
(Note: stickpeople is the offical repository, not a community build)
py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download
1.2/ MySQL
Install the following file:
mysql-python 1.2.3 ... http://sourceforge.net/projects/fpdb/files/fpdb/MySQL-python-1.2.3.win32-py2.7.exe/download
1.3/ pytz fixup to work in an executable package
pytz needs runtime access to timezone definition files. pytz is hard-coded to search in the directory from which the pytz .py modules are being run.
In a py2exe package, this directory is actually a library.zip container file, so windows cannot find the timezone definitions, and will crash the app.
We need to make a one-line change to pytz to search in the current working directory (which is not a container), and not the application directory.
The py2exe script copies the timezone datafiles into the package folder pyfpdb/zoneinfo.
Thanks to Jeff Peck <peck.jeff <at> gmail.com> on the py2exe mailing list for documenting this problem and solution.
1.3.1/ Navigate to C:\Python27\Lib\site-packages\pytz
1.3.2/ Edit __init__.py
1.3.3/ At line 55 replace the following line(s):
filename = os.path.join(os.path.dirname(__file__),
'zoneinfo', *name_parts)
with this line:
filename = os.path.join(os.getcwd(), 'zoneinfo', *name_parts)
1.3.4/ Save and exit
1.4/ Patch py2exe to stop popup runtime error message
see http://www.py2exe.org/index.cgi/StderrLog for technical info.
1.4.1/
dos> write C:\Python27\Lib\site-packages\py2exe\boot_common.py
replace:
atexit.register(alert, 0,
"See the logfile '%s' for details" % fname,
"Errors occurred")
with:
#atexit.register(alert, 0,
# "See the logfile '%s' for details" % fname,
# "Errors occurred")
1.4.2/ save and exit
Step 2 Setup GTK
-----------------
There are quite a few GTK packages needed, and rather than install them individually, I used the official AllinOne from the GTK project.
2,1/ Create a new folder c:\GTK
2.2/ Extract the following zip file into c:\GTK
gtk+ allinone 2.22.1 ... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.22/gtk+-bundle_2.22.1-20101227_win32.zip
2.3/ If everything has worked, you should have c:\GTK\bin \etc \lib \src and so on created.
2.4/ The /share/doc and /share/gtk-doc folders are huge, so can be emptied now (leave the /doc and /gtk-doc folders
in place, but delete the content)
Step 3 Set GTK into the PATH variable
-------------------------------------
The path for GTK isn't set by default, so need to let the o/s know where the GTK stuff is.
3.1/ Rightclick on mycomputer to show system properties
3.2/ select advanced/environment Variables
3.3/ in "system variables" NOT "user variables" do the following
3.3.1/ create a new item as name: GTK_BASEPATH value: c:\GTK
3.3.2/ edit the item "path", press home to get to the first character and insert the following text, (no quotes, including semicolon) %GTK_BASEPATH%\bin;
3.4/ to check, open command prompt and do:
dos>path ... system should respond with ... PATH=c:\GTK\bin;C:\WIN........
3.5/ Give it a spin to test (hopefully an application will start, if not, something has gone wrong)
dos> gtk-demo
Step 4 Get the fpdb GIT tree
----------------------------
4.1/ Best to take a copy to work with; following steps will assume that the fpdb folder is on the Desktop
4.2/ Edit the script in packaging/windows/py2exe_setup.py to set the fpdbver variable for this release
5.3/ Install correct Numpy for this build
-----------------------------------------
Numpy needs special handling, as by default it will install an optimised version for the SSE level of your CPU (SSE3, SSE2 or noSSE). This means that the completed package will not run on an older CPU.
For this reason, do not just run the installer. We will force a nosse version, to minimise problems on
older client PC's
5.3.1/ download the package to the Desktop
numpy 1.5.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/numpy-1.5.1-win32-superpack-python2.7.exe/download
5.3.3/ You are normally wanting to build a package which works on all CPU's, so install for noSSE as follows:
dos> cd Desktop
dos> numpy-1.5.1-win32-superpack-python2.7.exe /arch nosse
5.3.4/ At the end of the installation, click on "show details" to confirm the installation.
"Target CPU handles SSE2"
"Target CPU handles SSE3"
"nosse install (arch value: nosse)"
"Install NO SSE"
Extract: numpy-1.5.1-nosse.exe... 100%
Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.5.1-nosse.exe"
Completed
Step 6 Run py2exe to generate fpdb.exe
--------------------------------------
6.0/ Set version number of build folder
dos> cd Desktop\fpdb\packaging\windows
dos> write py2exe_setup.py
change the value of fpdbver and save file
6.1/ Run the script to create the fpdb.exe bundle
dos> cd Desktop\fpdb\packaging\windows
dos> c:\python27\python.exe py2exe_setup.py py2exe
wait a while, watch lots of copying and whatever.
6.2/ You should next get prompted for the GTK folder.
Enter c:\GTK
6.3/ If there are no errors reported, it has probably worked, we will test soon.
Build notes:
There is a warning about dll's not included "umath.pyd - c:\Python27\lib\site-packages\numpy\core\umath.pyd"
- reason for this is not understood at present. (Umath is apparently included in the built package).
Step 7 not currently used
-------------------------
Has been deleted
Step 8 Drag out the completed bundle
------------------------------------
py2exe creates a new folder for the created software bundle, drag this out to the desktop for ease of working.
8.1/ Drag Desktop\fpdb\packaging\windows\fpdb-n.nn.nnn to Desktop\
Step 9 Initial run
------------------
9.1/ Open the Desktop\fpdb-n.nn.nnn folder
9.2/ In explorer...tools...folder options...View uncheck "Hide extensions for known file types"
9.3/ Double click run_fpdb.bat
9.4/ check the contents of pyfpdb\fpdb.exe.log, deal with any errors thrown
9.5/ hopefully, fpdb will run
9.6/ Try out a few options, deal with any errors reported
Observe that the msvcp90.dll was provided by the python runtime package, so we don't have to install the separate package from Microsoft. End-users will, however need the dependency.
Step 11 deleted
---------------
Has been deleted
Step 12 rename folder
---------------------
If needed, rename the folder to something meaningful to the community.
Step 13 Compress to executable archive
--------------------------------------
13.1/ Download and install 7zip 914 ... http://sourceforge.net/projects/sevenzip/files/7-Zip/9.14/7z914.exe/download
13.2/ Rightclick on fpdb executable folder, select 7zip Add to archive... select SFX archive option switch
13.3/ Test the created exe file

View File

@ -24,32 +24,25 @@ Py2exe script for fpdb.
########################################################################
#TODO:
# get rid of all the uneeded libraries (e.g., pyQT)
# think about an installer
# done: change GuiAutoImport so that it knows to start HUD_main.exe, when appropriate
# include the lib needed to handle png files in mucked
#HOW TO USE this script:
#
#- edit the fpdbver variable in this script (this value will be used to create the distribution folder name)
#- cd to the folder where this script is stored, usually ...packaging/windows
#- Run the script with python "py2exe_setup.py py2exe"
#- You will frequently get messages about missing .dll files.just assume other
# person will have them? we have copyright issues including some dll's
#- If it works, you'll have a new dir fpdb-YYYYMMDD-exe which should
#- If it works, you'll have a new dir fpdb-version which should
# contain 2 dirs; gfx and pyfpdb and run_fpdb.bat
#- [ This bit is now automated:
# Last, you must copy the etc/, lib/ and share/ folders from your
# gtk/bin/ (just /gtk/?) folder to the pyfpdb folder. (the whole folders,
# not just the contents) ]
#- You can (should) then prune the etc/, lib/ and share/ folders to
# remove components we don't need. (see output at end of program run)
# See walkthrough in packaging directory for versions used
# Very useful guide here : http://www.no-ack.org/2010/09/complete-guide-to-py2exe-for-pygtk.html
# steffeN: Doesnt seem necessary to gettext-ify this, but feel free to if you disagree
# Gimick: restructure to allow script to run from packaging/windows directory, and not to write to source pyfpdb
fpdbver = '0.22'
import os
import sys
@ -61,12 +54,16 @@ except:
print "A parameter is required, quitting now"
quit()
if sys.argv[1] <> "py2exe":
print "Parameter 1 is not valid, quitting now"
quit()
from distutils.core import setup
import py2exe
import glob
import matplotlib
import shutil
#from datetime import date
import cdecimal
def isSystemDLL(pathname):
#dwmapi appears to be vista-specific file, not XP
@ -75,12 +72,15 @@ def isSystemDLL(pathname):
return origIsSystemDLL(pathname)
def test_and_remove(top):
#print "Attempting to delete:", top
if os.path.exists(top):
if os.path.isdir(top):
remove_tree(top)
else:
print "Unexpected file '"+top+"' found. Exiting."
exit()
else:
"oops folder not found"
def remove_tree(top):
# Delete everything reachable from the directory named in 'top',
@ -89,8 +89,8 @@ def remove_tree(top):
# could delete all your disk files.
# sc: Nicked this from somewhere, added the if statement to try
# make it a bit safer
if top in ('build','dist',distdir) and os.path.basename(os.getcwd()) == 'windows':
#print "removing directory '"+top+"' ..."
if (top in ('build','dist') or top.startswith(distdir)) and os.path.basename(os.getcwd()) == 'windows':
print "removing directory '"+top+"' ..."
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
os.remove(os.path.join(root, name))
@ -111,8 +111,6 @@ def copy_file(source,destination):
shutil.copy( source, destination )
fpdbver = '0.21.rc1'
distdir = r'fpdb-' + fpdbver
rootdir = r'../../' #cwd is normally /packaging/windows
pydir = rootdir+'pyfpdb/'
@ -172,20 +170,17 @@ setup(
] + matplotlib.get_py2exe_datafiles()
)
# ,(distdir, [rootdir+'run_fpdb.bat'])
# ,(distdir+r'\gfx', glob.glob(gfxdir+'*.*'))
# ] +
print "*** py2exe build phase complete ***"
# copy zone info and fpdb translation folders
copy_tree (r'c:\python26\Lib\site-packages\pytz\zoneinfo', os.path.join(r'dist', 'zoneinfo'))
copy_tree (r'c:\python27\Lib\site-packages\pytz\zoneinfo', os.path.join(r'dist', 'zoneinfo'))
copy_tree (pydir+r'locale', os.path.join(r'dist', 'locale'))
# create distribution folder and populate with gfx + bat
copy_tree (gfxdir, os.path.join(distdir, 'gfx'))
copy_file (rootdir+'run_fpdb.bat', distdir)
print "*** Renaming dist folder as distribution pyfpdb folder ***"
print "*** Renaming dist folder as pyfpdb folder ***"
dest = os.path.join(distdir, 'pyfpdb')
os.rename( 'dist', dest )
@ -203,23 +198,27 @@ copy_tree(os.path.join(gtk_dir, 'etc'), os.path.join(dest, 'etc'))
copy_tree(os.path.join(gtk_dir, 'lib'), os.path.join(dest, 'lib'))
copy_tree(os.path.join(gtk_dir, 'share'), os.path.join(dest, 'share'))
print "*** All done! ***"
print "*** Activating MS-Windows GTK theme ***"
gtkrc = open(os.path.join(distdir, 'pyfpdb', 'etc', 'gtk-2.0', 'gtkrc'), 'w')
print >>gtkrc, 'gtk-theme-name = "MS-Windows"'
gtkrc.close()
print "*** deleting temporary build folder ***"
test_and_remove('build')
print distdir+" is in the pyfpdb dir"
print """
The following dirs can probably removed to make the final package smaller:
pyfpdb/lib/glib-2.0
pyfpdb/lib/gtk-2.0/include
pyfpdb/lib/pkgconfig
pyfpdb/share/aclocal
pyfpdb/share/doc
pyfpdb/share/glib-2.0
pyfpdb/share/gtk-2.0
pyfpdb/share/gtk-doc
pyfpdb/share/locale
pyfpdb/share/man
pyfpdb/share/themes/Default
print "*** deleting folders to shrink package size ***"
test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'glib-2.0'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'gtk-2.0','include'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'pkgconfig'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'aclocal'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'doc'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'glib-2.0'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-2.0'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-doc'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'locale'))
test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'man'))
Use 7-zip to zip up the distribution and create a self extracting archive and that's it!
"""
print "***++++++++++++++++++++++++++++++++++++++++++++++"
print "All done!"
print "The distribution folder "+distdir+" is in the pyfpdb dir"
print "***++++++++++++++++++++++++++++++++++++++++++++++"

View File

@ -2,6 +2,7 @@ pypokereval build for windows stepbystep guide
----------------------------------------------
Created by Gimick on 3rd December 2010
Updated for py27 by Gimick 27th Feb 2011
This walkthrough is derived with the assistance of EricBlade and the build notes
supplied by Loic Dachary <loic@dachary.org> http://dachary.org/
@ -12,7 +13,7 @@ Content is available under the the GNU Affero General Public License version 3
0. Build environ
----------------
We are building against the 2008 runtime because Python 2.6
We are building against the 2008 runtime because Python 2.7
has the same dependency (msvcr90.dll version 9.0.21022.8)
Using winXPhome 32 bit
@ -31,7 +32,7 @@ This package will run 30 days before registration is needed
2.1/ Install python runtime from here ...
Python 2.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi
Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi
3. Source install
-----------------
@ -62,11 +63,29 @@ change this:
to be this:
#define VERSION_NAME(W) W##2_6
#define PYTHON_VERSION "2_6"
#define VERSION_NAME(W) W##2_7
#define PYTHON_VERSION "2_7"
- - - - - -
Move this block of code:
#ifdef _DEBUG // for Windows python23_d.lib is not in distribution... ugly but works
#undef _DEBUG
#include <Python.h>
#define _DEBUG
#else
#include <Python.h>
#endif
To be after this line:
#include "enumdefs.h"
4.2/ save and exit
- - - - -
4.3/ dos> write c:/pypoker-eval/pokereval.py
Comment-out this line:
@ -75,7 +94,7 @@ _pokereval = __import__('_pokereval_' + sys.version[0] + '_' + sys.version[2])
Insert this one in its' place:
import _pokereval_2_6 as _pokereval
import _pokereval_2_7 as _pokereval
4.4/ save and exit
@ -112,7 +131,7 @@ import _pokereval_2_6 as _pokereval
6.2.5 In the pythonpoker-eval properties dialog,
change references to "python24" to "python26" in the following:
change references to "python24" to "python27" in the following:
= C/C++/Additional Include Directories/
= linker/general/Additional library directories
@ -121,7 +140,6 @@ change references to "python24" to "python26" in the following:
Change the following
= linker/generate debug info - set to No
= linker/debugging/Generate debug info - set to No
6.2.6 Apply all changes to the properties dialog and close
@ -154,38 +172,39 @@ Change the following
8.4 Exit from visual studio
9. packaging
------------
9. Wrap-up
----------
9.1 Navigate to c:/pypoker-eval/release
9.2 the output file is pypokereval.dll
9.3 rename this file to _pokereval_2_6.pyd
9.3 rename this file to _pokereval_2_7.pyd
9.4 create a zip file containing :
_pokereval_2_6.pyd from releases
_pokereval_2_7.pyd from releases
test.py from pypoker-eval-138.0
pokereval.py from pypoker-eval-138.0
poker-eval.vcproj from c:\poker-eval
pypoker-eval.vcproj from c:\pypoker-eval
pypokereval.c from c:\pypoker-eval
Remember to include the version (138), python 265 and win32 in the package filename
Remember to include the version (138), python 27 and win32 in the package filename
10. Installation and Testing
----------------------------
10. Testing
-----------
Python 2.6.5 must be installed
Python 2.7 must be installed
10.1 Extract this package to directory
10.1 Extract the zip file created in 9.4 into a new directory
10.2 Change directory to the directory in 10.1
10.3 execute dos> c:\Python26\python.exe test.py
10.3 execute dos> c:\Python27\python.exe test.py
10.4 hand-output should scroll down the screen
10.5 start the python interpreter
10.6 >>> import pokereval
10.7 No errors should be seen
11. Packaging
-------------
Please follow pypokereval-win32-packaging-walkthrough.txt in the same directory as this walkthrough.

View File

@ -202,10 +202,10 @@ class Absolute(HandHistoryConverter):
if m is None or fname_info is None:
if m is None:
tmp = hand.handText[0:100]
logging.error(_("Didn't match re_HandInfo: '%s'") % tmp)
raise FpdbParseError("Absolute: " + _("Didn't match re_HandInfo: '%s'") % tmp)
logging.error(_("No match in readHandInfo: '%s'") % tmp)
raise FpdbParseError("Absolute: " + _("No match in readHandInfo: '%s'") % tmp)
elif fname_info is None:
logging.error(_("readHandInfo: File name didn't match re_*InfoFromFilename"))
logging.error(_("File name didn't match re_*InfoFromFilename"))
logging.error(_("File name: %s") % self.in_path)
raise FpdbParseError("Absolute: " + _("Didn't match re_*InfoFromFilename: '%s'") % self.in_path)
@ -349,7 +349,7 @@ class Absolute(HandHistoryConverter):
bet = action.group('BET').replace(',', '')
hand.addComplete( street, action.group('PNAME'), bet)
else:
logging.debug(_("Unimplemented readAction: %s %s") % (action.group('PNAME'),action.group('ATYPE')))
logging.debug(_("Unimplemented readAction: '%s' '%s'") % (action.group('PNAME'),action.group('ATYPE')))
def readShowdownActions(self, hand):

View File

@ -370,6 +370,7 @@ class Site(object):
(10, 'Partouche', 'PA'),
(11, 'Carbon', 'CA'),
(12, 'PKR', 'PK'),
(13, 'PacificPoker', 'P8'),
]
INITIAL_DATA_KEYS = ('id', 'name', 'code')

View File

@ -52,7 +52,7 @@ else:
m = hhc.re_PlayerInfo.finditer(filecontents)
outfile = options.filename+".anon"
print _("Output being written to"), outfile
print (_("Output being written to %s") % outfile)
savestdout = sys.stdout
fsock = open(outfile,"w")

View File

@ -105,8 +105,8 @@ class Betfair(HandHistoryConverter):
def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText)
if(m == None):
log.error(_("Didn't match re_HandInfo"))
raise FpdbParseError(_("No match in readHandInfo."))
log.error(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
raise FpdbParseError(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE')))
hand.handid = m.group('HID')
hand.tablename = m.group('TABLE')
@ -196,7 +196,7 @@ class Betfair(HandHistoryConverter):
elif action.group('ATYPE') == 'checks':
hand.addCheck( street, action.group('PNAME'))
else:
sys.stderr.write(_("DEBUG: ") + _("unimplemented readAction: '%s' '%s'") % (action.group('PNAME'),action.group('ATYPE')))
sys.stderr.write(_("DEBUG: ") + _("Unimplemented readAction: '%s' '%s'") % (action.group('PNAME'),action.group('ATYPE')))
def readShowdownActions(self, hand):

View File

@ -160,9 +160,9 @@ or None if we fail to get the info """
def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText)
if m is None:
logging.info(_("Didn't match re_HandInfo"))
logging.info(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
logging.info(hand.handText)
raise FpdbParseError(_("No match in readHandInfo."))
raise FpdbParseError(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
logging.debug("HID %s-%s, Table %s" % (m.group('HID1'),
m.group('HID2'), m.group('TABLE')[:-1]))
hand.handid = m.group('HID1') + m.group('HID2')
@ -264,8 +264,7 @@ or None if we fail to get the info """
elif action.group('ATYPE') == 'ALL_IN':
hand.addAllIn(street, player, action.group('BET'))
else:
logging.debug(_("Unimplemented readAction: %s %s")
% (action.group('PSEAT'),action.group('ATYPE')))
logging.debug(_("Unimplemented readAction: '%s' '%s'") % (action.group('PSEAT'),action.group('ATYPE')))
def readShowdownActions(self, hand):
for shows in self.re_ShowdownAction.finditer(hand.handText):

View File

@ -55,7 +55,10 @@ log = logging.getLogger("config")
def get_default_config_path():
"""Returns the path where the fpdb config file _should_ be stored."""
if os.name == 'posix':
config_path = os.path.join(os.path.expanduser("~"), '.fpdb')
if (os.uname()[0]=="Darwin"):
config_path = os.path.join(os.getenv("HOME"), ".fpdb")
else:
config_path = os.path.join(os.path.expanduser("~"), '.fpdb')
elif os.name == 'nt':
config_path = os.path.join(unicode(os.environ[u"APPDATA"], "latin-1"), u"fpdb")
#print u"path after joining in get_default_config_path:",config_path
@ -75,7 +78,6 @@ def get_exec_path():
def get_config(file_name, fallback = True):
"""Looks in cwd and in self.default_config_path for a config file."""
# look for example file even if not used here, path is returned to caller
config_found,example_found,example_copy = False,False,False
config_path, example_path = None,None
@ -85,17 +87,17 @@ def get_config(file_name, fallback = True):
config_path = os.path.join(exec_dir, 'pyfpdb', file_name)
else:
config_path = os.path.join(exec_dir, file_name)
# print "config_path=", config_path
#print "config_path=", config_path
if os.path.exists(config_path): # there is a file in the cwd
config_found = True # so we use it
else: # no file in the cwd, look where it should be in the first place
default_dir = get_default_config_path()
config_path = os.path.join(default_dir, file_name)
# print "config path 2=", config_path
#print "config path 2=", config_path
if os.path.exists(config_path):
config_found = True
# Example configuration for debian package
# Example configuration for debian package
if os.name == 'posix':
# If we're on linux, try to copy example from the place
# debian package puts it; get_default_config_path() creates
@ -109,7 +111,14 @@ def get_config(file_name, fallback = True):
msg = _("Config file has been created at %s.\n") % config_path
logging.info(msg)
except IOError:
pass
try:
example_path = file_name + '.example'
shutil.copyfile(example_path, config_path)
example_copy = True
msg = _("Config file has been created at %s.\n") % config_path
logging.info(msg)
except IOError:
pass
# OK, fall back to the .example file, should be in the start dir
elif os.path.exists(file_name + ".example"):
@ -482,7 +491,6 @@ class Import:
self.node = node
self.interval = node.getAttribute("interval")
self.callFpdbHud = node.getAttribute("callFpdbHud")
self.hhArchiveBase = node.getAttribute("hhArchiveBase")
self.ResultsDirectory = node.getAttribute("ResultsDirectory")
self.hhBulkPath = node.getAttribute("hhBulkPath")
self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False)
@ -492,8 +500,8 @@ class Import:
self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False)
def __str__(self):
return " interval = %s\n callFpdbHud = %s\n hhArchiveBase = %s\n saveActions = %s\n fastStoreHudCache = %s\nResultsDirectory = %s" \
% (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.cacheSessions, self.sessionTimeout, self.fastStoreHudCache, self.ResultsDirectory)
return " interval = %s\n callFpdbHud = %s\n saveActions = %s\n fastStoreHudCache = %s\nResultsDirectory = %s" \
% (self.interval, self.callFpdbHud, self.saveActions, self.cacheSessions, self.sessionTimeout, self.fastStoreHudCache, self.ResultsDirectory)
class HudUI:
def __init__(self, node):
@ -712,7 +720,7 @@ class Config:
while added > 0 and n < 2:
n = n + 1
log.info(_("Reading configuration file %s") % file)
print _("\nReading configuration file %s\n") % file
print (("\n"+_("Reading configuration file %s")+"\n") % file)
try:
doc = xml.dom.minidom.parse(file)
self.doc = doc
@ -858,9 +866,6 @@ class Config:
return nodes_added
def set_hhArchiveBase(self, path):
self.imp.node.setAttribute("hhArchiveBase", path)
def find_default_conf(self):
if os.name == 'posix':
config_path = os.path.join(os.path.expanduser("~"), '.fpdb', 'default.conf')
@ -1258,10 +1263,6 @@ class Config:
try: imp['interval'] = self.imp.interval
except: imp['interval'] = 10
# hhArchiveBase is the temp store for part-processed hand histories - should be redundant eventually
try: imp['hhArchiveBase'] = self.imp.hhArchiveBase
except: imp['hhArchiveBase'] = "~/.fpdb/HandHistories/"
# ResultsDirectory is the local cache for downloaded results
# NOTE: try: except: doesn'tseem to be triggering
# using if instead

View File

@ -1519,6 +1519,7 @@ class Database:
c.execute("INSERT INTO Sites (name,code) VALUES ('Betfair', 'BF')")
c.execute("INSERT INTO Sites (name,code) VALUES ('Absolute', 'AB')")
c.execute("INSERT INTO Sites (name,code) VALUES ('PartyPoker', 'PP')")
c.execute("INSERT INTO Sites (name,code) VALUES ('PacificPoker', 'P8')")
c.execute("INSERT INTO Sites (name,code) VALUES ('Partouche', 'PA')")
c.execute("INSERT INTO Sites (name,code) VALUES ('Carbon', 'CA')")
c.execute("INSERT INTO Sites (name,code) VALUES ('PKR', 'PK')")
@ -2054,6 +2055,14 @@ class Database:
cursor = self.get_cursor()
for row in inserts:
#convert all True/False values to numeric 0/1
# needed because columns in hudcache are not BOOL they are INT
# and are being summed if an existing hudcache entry exists
# psycopg2 module does not automatically convert these to numeric.
# mantis bug #93
for ind in range(len(row)):
if row[ind] == True: row[ind] = 1
if row[ind] == False: row[ind] = 0
# Try to do the update first:
num = cursor.execute(update_hudcache, row)
#print "DEBUG: values: %s" % row[-6:]

View File

@ -142,9 +142,9 @@ class Everest(HandHistoryConverter):
def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText)
if m is None:
logging.info(_("Didn't match re_HandInfo"))
logging.info(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
logging.info(hand.handText)
raise FpdbParseError(_("No match in readHandInfo."))
raise FpdbParseError(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
hand.handid = m.group('HID')
hand.tablename = self.info['TABLENAME']
hand.maxseats = None
@ -231,9 +231,8 @@ class Everest(HandHistoryConverter):
elif action.group('ATYPE') in ('FOLD', 'SIT_OUT'):
hand.addFold(street, player)
else:
print (_("Unimplemented readAction: %s %s") % (action.group('PSEAT'),action.group('ATYPE')))
logging.debug(_("Unimplemented readAction: %s %s")
% (action.group('PSEAT'),action.group('ATYPE')))
print (_("Unimplemented readAction: '%s' '%s'") % (action.group('PSEAT'),action.group('ATYPE')))
logging.debug(_("Unimplemented readAction: '%s' '%s'") % (action.group('PSEAT'),action.group('ATYPE')))
def readShowdownActions(self, hand):
for shows in self.re_ShowdownAction.finditer(hand.handText):

View File

@ -142,7 +142,7 @@ or None if we fail to get the info """
def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText)
if(m == None):
logging.info(_("Didn't match re_HandInfo"))
logging.info(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
logging.info(hand.handText)
return None
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE')))

View File

@ -52,7 +52,7 @@ class Filters(threading.Thread):
# text used on screen stored here so that it can be configured
self.filterText = {'limitsall':_('All'), 'limitsnone':_('None'), 'limitsshow':_('Show _Limits')
,'seatsbetween':_('Between:'), 'seatsand':_('And:'), 'seatsshow':_('Show Number of _Players')
,'playerstitle':_('Hero:'), 'sitestitle':_('Sites:'), 'gamestitle':_('Games:')
,'playerstitle':_('Hero:'), 'sitestitle':(_('Sites')+':'), 'gamestitle':(_('Games')+':')
,'limitstitle':_('Limits:'), 'seatstitle':_('Number of Players:')
,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats')
,'datestitle':_('Date:')

View File

@ -260,7 +260,7 @@ class Fulltilt(HandHistoryConverter):
if m is None:
tmp = hand.handText[0:100]
log.error(_("Unable to recognise handinfo from: '%s'") % tmp)
log.error(_("readHandInfo: Raising FpdbParseError"))
log.error("readHandInfo: " + _("Raising FpdbParseError"))
raise FpdbParseError(_("Unable to recognise handinfo from: '%s'"))
#print "DEBUG: m.groupdict: %s" % m.groupdict()

View File

@ -223,15 +223,16 @@ class GuiAutoImport (threading.Thread):
def startClicked(self, widget, data):
"""runs when user clicks start on auto import tab"""
# Check to see if we have an open file handle to the HUD and open one if we do not.
# bufsize = 1 means unbuffered
# We need to close this file handle sometime.
# Check to see if we have an open file handle to the HUD and open one if we do not.
# bufsize = 1 means unbuffered
# We need to close this file handle sometime.
# TODO: Allow for importing from multiple dirs - REB 29AUG2008
# As presently written this function does nothing if there is already a pipe open.
# That is not correct. It should open another dir for importing while piping the
# results to the same pipe. This means that self.path should be a a list of dirs
# to watch.
# TODO: Allow for importing from multiple dirs - REB 29AUG2008
# As presently written this function does nothing if there is already a pipe open.
# That is not correct. It should open another dir for importing while piping the
# results to the same pipe. This means that self.path should be a a list of dirs
# to watch.
if data == "autostart" or (widget == self.startButton and self.startButton.get_active()):
self.startButton.set_active(True)
# - Does the lock acquisition need to be more sophisticated for multiple dirs?

View File

@ -478,7 +478,7 @@ class AddDB(gtk.Dialog):
def run(self):
response = super(AddDB,self).run()
log.debug(_("addDB.run: response is %s accept is %s") % (str(response), str(int(gtk.RESPONSE_ACCEPT))))
log.debug(_("addDB.run: response is %s, accept is %s") % (str(response), str(int(gtk.RESPONSE_ACCEPT))))
ok,retry = False,True
while response == gtk.RESPONSE_ACCEPT:

View File

@ -46,10 +46,8 @@ try:
from numpy import arange, cumsum
from pylab import *
except ImportError, inst:
print _("""Failed to load libs for graphing, graphing will not function. Please
install numpy and matplotlib if you want to use graphs.""")
print _("""This is of no consequence for other parts of the program, e.g. import
and HUD are NOT affected by this problem.""")
print _("""Failed to load libs for graphing, graphing will not function. Please install numpy and matplotlib if you want to use graphs.""")
print _("""This is of no consequence for other parts of the program, e.g. import and HUD are NOT affected by this problem.""")
print "ImportError: %s" % inst.args
class GuiGraphViewer (threading.Thread):

View File

@ -75,7 +75,7 @@ class GuiPrefs:
configColumn.pack_start(cRender, True)
configColumn.add_attribute(cRender, 'text', 1)
configColumn = gtk.TreeViewColumn(_("Value (double-click to change)"))
configColumn = gtk.TreeViewColumn(_("Value (double-click to change)"))
self.configView.append_column(configColumn)
cRender = gtk.CellRendererText()
configColumn.pack_start(cRender, True)

View File

@ -131,10 +131,10 @@ class GuiStove():
flop_games_cb = self.create_combo_box(games)
players_cb = self.create_combo_box(players)
label = gtk.Label(_("Gametype:"))
label = gtk.Label(_("Gametype")+":")
ddhbox.add(label)
ddhbox.add(flop_games_cb)
label = gtk.Label(_("Players:"))
label = gtk.Label(_("Players")+":")
ddhbox.add(label)
ddhbox.add(players_cb)

View File

@ -46,10 +46,8 @@ try:
from numpy import arange, cumsum
from pylab import *
except ImportError, inst:
print _("""Failed to load libs for graphing, graphing will not function. Please
install numpy and matplotlib if you want to use graphs.""")
print _("""This is of no consequence for other parts of the program, e.g. import
and HUD are NOT affected by this problem.""")
print _("""Failed to load libs for graphing, graphing will not function. Please install numpy and matplotlib if you want to use graphs.""")
print _("""This is of no consequence for other parts of the program, e.g. import and HUD are NOT affected by this problem.""")
print "ImportError: %s" % inst.args
class GuiTourneyGraphViewer (threading.Thread):

View File

@ -2,7 +2,7 @@
<FreePokerToolsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FreePokerToolsConfig.xsd">
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True" cacheSessions="True" sessionTimeout="30"></import>
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" saveActions="True" cacheSessions="True" sessionTimeout="30"></import>
<!-- These values determine what stats are displayed in the HUD
@ -389,6 +389,49 @@ Left-Drag to Move"
</layout>
</site>
<site enabled="True"
site_name="PacificPoker"
table_finder="poker.exe"
screen_name="Hero"
site_path="C:/Games/Poker/PacificPoker"
HH_path="C:/Users/rwielinga/AppData/Roaming/PacificPoker/HandHistory/Hero/"
decoder="everleaf_decode_table"
converter="PacificPokerToFpdb"
supported_games="holdem">
<layout fav_seat="0" height="547" max="8" width="794">
<location seat="1" x="640" y="64"> </location>
<location seat="2" x="650" y="230"> </location>
<location seat="3" x="650" y="385"> </location>
<location seat="4" x="588" y="425"> </location>
<location seat="5" x="92" y="425"> </location>
<location seat="6" x="0" y="373"> </location>
<location seat="7" x="0" y="223"> </location>
<location seat="8" x="25" y="50"> </location>
</layout>
<layout fav_seat="0" height="547" max="6" width="794">
<location seat="1" x="640" y="58"> </location>
<location seat="2" x="654" y="288"> </location>
<location seat="3" x="615" y="424"> </location>
<location seat="4" x="70" y="421"> </location>
<location seat="5" x="0" y="280"> </location>
<location seat="6" x="70" y="58"> </location>
</layout>
<layout fav_seat="0" height="547" max="2" width="794">
<location seat="1" x="651" y="288"> </location>
<location seat="2" x="10" y="288"> </location>
</layout>
<layout fav_seat="0" height="547" max="9" width="794">
<location seat="1" x="634" y="38"> </location>
<location seat="2" x="667" y="184"> </location>
<location seat="3" x="667" y="321"> </location>
<location seat="4" x="667" y="445"> </location>
<location seat="5" x="337" y="459"> </location>
<location seat="6" x="0" y="400"> </location>
<location seat="7" x="0" y="322"> </location>
<location seat="8" x="0" y="181"> </location>
<location seat="9" x="70" y="53"> </location>
</layout>
</site>
<site enabled="True"
site_name="Betfair"
@ -754,6 +797,7 @@ Left-Drag to Move"
<hhc site="Win2day" converter="Win2dayToFpdb"/>
<hhc site="Absolute" converter="AbsoluteToFpdb"/>
<hhc site="PartyPoker" converter="PartyPokerToFpdb"/>
<hhc site="PacificPoker" converter="PacificPokerToFpdb"/>
<hhc site="Betfair" converter="BetfairToFpdb"/>
<hhc site="OnGame" converter="OnGameToFpdb"/>
<hhc site="Carbon" converter="CarbonToFpdb"/>

View File

@ -12,7 +12,7 @@
config_difficulty="expert"
/>
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" hhArchiveBase="~/.fpdb/HandHistories/" saveActions="True" cacheSessions="False" sessionTimeout="30"></import>
<import callFpdbHud = "True" interval = "10" fastStoreHudCache="False" saveActions="True" cacheSessions="False" sessionTimeout="30"></import>
<gui_cash_stats>
<col col_name="game" disp_all="True" disp_posn="True" col_title="Game" xalignment="0.0" field_format="%s" field_type="str" />

View File

@ -80,12 +80,23 @@ class HUD_main(object):
self.hud_dict = {}
self.hud_params = self.config.get_hud_ui_parameters()
# a thread to read stdin
# a thread to read stdin
gobject.threads_init() # this is required
thread.start_new_thread(self.read_stdin, ()) # starts the thread
# a main window
# a main window
self.main_window = gtk.Window()
if os.name == 'nt': # Check for admin rights, don't start auto import if we don't have them
if (os.sys.getwindowsversion()[0] >= 6):
import ctypes
if not ctypes.windll.shell32.IsUserAnAdmin():
dia = gtk.MessageDialog(parent=self.main_window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_ERROR, buttons=(gtk.BUTTONS_OK), message_format=_("No admin rights for HUD"))
dia.format_secondary_text(_("Please right click fpdb.exe and HUD_main.exe, select properties, and set them both to run as admin.")+" "+_("You will need to restart fpdb afterwards."))
response = dia.run()
dia.destroy()
return
if options.minimized:
self.main_window.iconify()
if options.hidden:
@ -141,7 +152,7 @@ class HUD_main(object):
self.kill_hud(None, hud.table.key)
def destroy(self, *args): # call back for terminating the main eventloop
log.info(_("Terminating normally."))
log.info(_("Quitting normally"))
gtk.main_quit()
def kill_hud(self, event, table):

View File

@ -47,7 +47,7 @@ class Hand(object):
# Class Variables
UPS = {'a':'A', 't':'T', 'j':'J', 'q':'Q', 'k':'K', 'S':'s', 'C':'c', 'H':'h', 'D':'d'}
LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'}
SYMBOL = {'USD': '$', 'EUR': u'$', 'GBP': '$', 'T$': '', 'play': ''}
SYMBOL = {'USD': '$', 'CAD': '$', 'EUR': u'$', 'GBP': '$', 'T$': '', 'play': ''}
MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'}
ACTION = {'ante': 1, 'small blind': 2, 'secondsb': 3, 'big blind': 4, 'both': 5, 'calls': 6, 'raises': 7,
'bets': 8, 'stands pat': 9, 'folds': 10, 'checks': 11, 'discards': 12, 'bringin': 13, 'completes': 14}

View File

@ -460,24 +460,8 @@ or None if we fail to get the info """
def sanityCheck(self):
"""Check we aren't going to do some stupid things"""
#TODO: the hhbase stuff needs to be in fpdb_import
sane = False
base_w = False
#~ #Check if hhbase exists and is writable
#~ #Note: Will not try to create the base HH directory
#~ if not (os.access(self.hhbase, os.W_OK) and os.path.isdir(self.hhbase)):
#~ print "HH Sanity Check: Directory hhbase '" + self.hhbase + "' doesn't exist or is not writable"
#~ else:
#~ #Check if hhdir exists and is writable
#~ if not os.path.isdir(self.hhdir):
#~ # In first pass, dir may not exist. Attempt to create dir
#~ print "Creating directory: '%s'" % (self.hhdir)
#~ os.mkdir(self.hhdir)
#~ sane = True
#~ elif os.access(self.hhdir, os.W_OK):
#~ sane = True
#~ else:
#~ print "HH Sanity Check: Directory hhdir '" + self.hhdir + "' or its parent directory are not writable"
# Make sure input and output files are different or we'll overwrite the source file
if True: # basically.. I don't know

View File

@ -334,7 +334,7 @@ class OnGame(HandHistoryConverter):
elif action.group('ATYPE') == ' stands pat':
hand.addStandsPat( street, action.group('PNAME'))
else:
print (_("DEBUG: ") + _("unimplemented readAction: '%s' '%s'") % (action.group('PNAME'), action.group('ATYPE')))
print (_("DEBUG: ") + _("Unimplemented readAction: '%s' '%s'") % (action.group('PNAME'), action.group('ATYPE')))
def readShowdownActions(self, hand):
for shows in self.re_ShowdownAction.finditer(hand.handText):

View File

@ -83,6 +83,7 @@ def site_alias(alias):
"""Function for converting various site aliases to the FPDB name"""
tmp = alias
aliases = {
"PacificPoker" : "PacificPoker",
"PokerStars" : "PokerStars",
"Full Tilt Poker": "Full Tilt Poker",
"PartyPoker" : "PartyPoker",

View File

@ -0,0 +1,467 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2008-2010, Carl Gherardi
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
########################################################################
import L10n
_ = L10n.get_translation()
# TODO: straighten out discards for draw games
import sys
from HandHistoryConverter import *
from decimal_wrapper import Decimal
# PacificPoker HH Format
class PacificPoker(HandHistoryConverter):
# Class Variables
sitename = "PacificPoker"
filetype = "text"
codepage = ("utf8", "cp1252")
siteId = 13 # Needs to match id entry in Sites database
mixes = { 'HORSE': 'horse', '8-Game': '8game', 'HOSE': 'hose'} # Legal mixed games
sym = {'USD': "\$", 'CAD': "\$", 'T$': "", "EUR": "\xe2\x82\xac", "GBP": "\xa3", "play": ""} # ADD Euro, Sterling, etc HERE
substitutions = {
'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes
'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8)
}
# translations from captured groups to fpdb info strings
# :: TODO 0.02 limit does not seem right
Lim_Blinds = { '0.02': ('0.01', '0.02'), '0.04': ('0.01', '0.02'),
'0.10': ('0.02', '0.05'), '0.20': ('0.05', '0.10'),
'0.40': ('0.10', '0.20'), '0.50': ('0.10', '0.25'),
'1.00': ('0.25', '0.50'), '1': ('0.25', '0.50'),
'2.00': ('0.50', '1.00'), '2': ('0.50', '1.00'),
'4.00': ('1.00', '2.00'), '4': ('1.00', '2.00'),
'6.00': ('1.00', '3.00'), '6': ('1.00', '3.00'),
'8.00': ('2.00', '4.00'), '8': ('2.00', '4.00'),
'10.00': ('2.00', '5.00'), '10': ('2.00', '5.00'),
'20.00': ('5.00', '10.00'), '20': ('5.00', '10.00'),
'30.00': ('10.00', '15.00'), '30': ('10.00', '15.00'),
'40.00': ('10.00', '20.00'), '40': ('10.00', '20.00'),
'60.00': ('15.00', '30.00'), '60': ('15.00', '30.00'),
'80.00': ('20.00', '40.00'), '80': ('20.00', '40.00'),
'100.00': ('25.00', '50.00'), '100': ('25.00', '50.00'),
'200.00': ('50.00', '100.00'), '200': ('50.00', '100.00'),
'400.00': ('100.00', '200.00'), '400': ('100.00', '200.00'),
'800.00': ('200.00', '400.00'), '800': ('200.00', '400.00'),
'1000.00': ('250.00', '500.00'),'1000': ('250.00', '500.00')
}
limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl', 'LIMIT':'fl', 'Fix Limit':'fl' }
games = { # base, category
"Holdem" : ('hold','holdem'),
'Omaha' : ('hold','omahahi'),
'Omaha Hi/Lo' : ('hold','omahahilo'),
'OmahaHL' : ('hold','omahahilo'),
'Razz' : ('stud','razz'),
'RAZZ' : ('stud','razz'),
'7 Card Stud' : ('stud','studhi'),
'7 Card Stud Hi/Lo' : ('stud','studhilo'),
'Badugi' : ('draw','badugi'),
'Triple Draw 2-7 Lowball' : ('draw','27_3draw'),
'Single Draw 2-7 Lowball' : ('draw','27_1draw'),
'5 Card Draw' : ('draw','fivedraw')
}
currencies = { u'':'EUR', '$':'USD', '':'T$' }
# Static regexes
re_GameInfo = re.compile(u"""
\#Game\sNo\s:\s(?P<HID>[0-9]+)\\n
\*\*\*\*\*\sCassava\sHand\sHistory\sfor\sGame\s[0-9]+\s\*\*\*\*\*\\n
(?P<CURRENCY>%(LS)s)?(?P<SB>[.,0-9]+)/(%(LS)s)?(?P<BB>[.,0-9]+)\sBlinds\s
(?P<LIMIT>No\sLimit|Fix\sLimit|Pot\sLimit)\s
(?P<GAME>Holdem|Omaha|OmahaHL)
\s-\s\*\*\*\s
(?P<DATETIME>.*$)
""" % substitutions, re.MULTILINE|re.VERBOSE)
re_PlayerInfo = re.compile(u"""
^Seat\s(?P<SEAT>[0-9]+):\s
(?P<PNAME>.*)\s
\(\s(%(LS)s)?(?P<CASH>[.,0-9]+)\s\)""" % substitutions,
re.MULTILINE|re.VERBOSE)
re_HandInfo = re.compile("""
^Table\s(?P<TABLE>[-\ \#a-zA-Z\d]+)\s
(\(Real\sMoney\))?
(?P<PLAY>\(Practice\sPlay\))?
\\n
Seat\s(?P<BUTTON>[0-9]+)\sis\sthe\sbutton
""", re.MULTILINE|re.VERBOSE)
re_SplitHands = re.compile('\n\n+')
re_TailSplitHands = re.compile('(\n\n\n+)')
re_Button = re.compile('Seat (?P<BUTTON>\d+) is the button', re.MULTILINE)
re_Board = re.compile(r"\[\s(?P<CARDS>.+)\s\]")
re_DateTime = re.compile("""(?P<D>[0-9]{2})\s(?P<M>[0-9]{2})\s(?P<Y>[0-9]{4})[\- ]+(?P<H>[0-9]+):(?P<MIN>[0-9]+):(?P<S>[0-9]+)""", re.MULTILINE)
# These used to be compiled per player, but regression tests say
# we don't have to, and it makes life faster.
short_subst = {'PLYR': r'(?P<PNAME>.+?)', 'CUR': '\$?'}
re_PostSB = re.compile(r"^%(PLYR)s posts small blind \[%(CUR)s(?P<SB>[.,0-9]+)\]" % short_subst, re.MULTILINE)
re_PostBB = re.compile(r"^%(PLYR)s posts big blind \[%(CUR)s(?P<BB>[.,0-9]+)\]" % short_subst, re.MULTILINE)
re_Antes = re.compile(r"^%(PLYR)s posts the ante \[%(CUR)s(?P<ANTE>[.,0-9]+)\]" % short_subst, re.MULTILINE)
re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for %(CUR)s(?P<BRINGIN>[.,0-9]+)" % short_subst, re.MULTILINE)
re_PostBoth = re.compile(r"^%(PLYR)s posts dead blind \[%(CUR)s(?P<SBBB>[.,0-9]+)\s\+\s%(CUR)s[.,0-9]+\]" % short_subst, re.MULTILINE)
re_HeroCards = re.compile(r"^Dealt to %(PLYR)s( \[\s(?P<NEWCARDS>.+?)\s\])" % short_subst, re.MULTILINE)
re_Action = re.compile(r"""
^%(PLYR)s(?P<ATYPE>\sbets|\schecks|\sraises|\scalls|\sfolds|\sdiscards|\sstands\spat)
(\s\[(%(CUR)s)?(?P<BET>[.,0-9]+)\])?
(\s*and\sis\sall.in)?
(\s*and\shas\sreached\sthe\s[%(CUR)s\d\.]+\scap)?
(\s*cards?(\s\[(?P<DISCARDED>.+?)\])?)?\s*$"""
% short_subst, re.MULTILINE|re.VERBOSE)
re_ShowdownAction = re.compile(r"^%s shows \[(?P<CARDS>.*)\]" % short_subst['PLYR'], re.MULTILINE)
re_sitsOut = re.compile("^%s sits out" % short_subst['PLYR'], re.MULTILINE)
re_ShownCards = re.compile("^%s ?(?P<SHOWED>shows|mucks) \[ (?P<CARDS>.*) \]$" % short_subst['PLYR'], re.MULTILINE)
re_CollectPot = re.compile(r"^%(PLYR)s collected \[ %(CUR)s(?P<POT>[.,0-9]+) \]$" % short_subst, re.MULTILINE)
def compilePlayerRegexs(self, hand):
pass
def readSupportedGames(self):
return [["ring", "hold", "nl"],
["ring", "hold", "pl"],
["ring", "hold", "fl"],
["ring", "stud", "fl"],
["ring", "draw", "fl"],
["ring", "draw", "pl"],
["ring", "draw", "nl"],
["tour", "hold", "nl"],
["tour", "hold", "pl"],
["tour", "hold", "fl"],
["tour", "stud", "fl"],
["tour", "draw", "fl"],
["tour", "draw", "pl"],
["tour", "draw", "nl"],
]
def determineGameType(self, handText):
info = {}
m = self.re_GameInfo.search(handText)
if not m:
tmp = handText[0:120]
log.error(_("Unable to recognise gametype from: '%s'") % tmp)
log.error(_("determineGameType: Raising FpdbParseError"))
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)
mg = m.groupdict()
if 'LIMIT' in mg:
#print "DEBUG: re_GameInfo[LIMIT] \'", mg['LIMIT'], "\'"
info['limitType'] = self.limits[mg['LIMIT']]
if 'GAME' in mg:
#print "DEBUG: re_GameInfo[GAME] \'", mg['GAME'], "\'"
(info['base'], info['category']) = self.games[mg['GAME']]
if 'SB' in mg:
#print "DEBUG: re_GameInfo[SB] \'", mg['SB'], "\'"
info['sb'] = mg['SB']
if 'BB' in mg:
#print "DEBUG: re_GameInfo[BB] \'", mg['BB'], "\'"
info['bb'] = mg['BB']
if 'CURRENCY' in mg:
#print "DEBUG: re_GameInfo[CURRENCY] \'", mg['CURRENCY'], "\'"
info['currency'] = self.currencies[mg['CURRENCY']]
if 'TOURNO' in mg and mg['TOURNO'] is not None:
info['type'] = 'tour'
else:
info['type'] = 'ring'
if info['limitType'] == 'fl' and info['bb'] is not None and info['type'] == 'ring' and info['base'] != 'stud':
try:
info['sb'] = self.Lim_Blinds[mg['BB']][0]
info['bb'] = self.Lim_Blinds[mg['BB']][1]
except KeyError:
log.error(_("Lim_Blinds has no lookup for '%s'") % mg['BB'])
log.error(_("determineGameType: Raising FpdbParseError"))
raise FpdbParseError(_("Lim_Blinds has no lookup for '%s'") % mg['BB'])
return info
def readHandInfo(self, hand):
info = {}
m = self.re_HandInfo.search(hand.handText,re.DOTALL)
m2 = self.re_GameInfo.search(hand.handText)
if m is None or m2 is None:
log.error(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
raise FpdbParseError(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
info.update(m.groupdict())
info.update(m2.groupdict())
log.debug("readHandInfo: %s" % info)
for key in info:
if key == 'DATETIME':
#2008/11/12 10:00:48 CET [2008/11/12 4:00:48 ET] # (both dates are parsed so ET date overrides the other)
#2008/08/17 - 01:14:43 (ET)
#2008/09/07 06:23:14 ET
m1 = self.re_DateTime.finditer(info[key])
datetimestr = "2000/01/01 00:00:00" # default used if time not found
for a in m1:
datetimestr = "%s/%s/%s %s:%s:%s" % (a.group('Y'), a.group('M'),a.group('D'),a.group('H'),a.group('MIN'),a.group('S'))
#tz = a.group('TZ') # just assume ET??
#print " tz = ", tz, " datetime =", datetimestr
hand.startTime = datetime.datetime.strptime(datetimestr, "%Y/%m/%d %H:%M:%S") # also timezone at end, e.g. " ET"
hand.startTime = HandHistoryConverter.changeTimezone(hand.startTime, "ET", "UTC")
if key == 'HID':
hand.handid = info[key]
if key == 'TOURNO':
hand.tourNo = info[key]
if key == 'BUYIN':
if hand.tourNo!=None:
#print "DEBUG: info['BUYIN']: %s" % info['BUYIN']
#print "DEBUG: info['BIAMT']: %s" % info['BIAMT']
#print "DEBUG: info['BIRAKE']: %s" % info['BIRAKE']
#print "DEBUG: info['BOUNTY']: %s" % info['BOUNTY']
if info[key] == 'Freeroll':
hand.buyin = 0
hand.fee = 0
hand.buyinCurrency = "FREE"
else:
if info[key].find("$")!=-1:
hand.buyinCurrency="USD"
elif info[key].find(u"")!=-1:
hand.buyinCurrency="EUR"
elif info[key].find("FPP")!=-1:
hand.buyinCurrency="PSFP"
else:
#FIXME: handle other currencies, FPP, play money
raise FpdbParseError(_("Failed to detect currency. Hand ID: %s: '%s'") % (hand.handid, info[key]))
info['BIAMT'] = info['BIAMT'].strip(u'$€FPP')
if hand.buyinCurrency!="PSFP":
if info['BOUNTY'] != None:
# There is a bounty, Which means we need to switch BOUNTY and BIRAKE values
tmp = info['BOUNTY']
info['BOUNTY'] = info['BIRAKE']
info['BIRAKE'] = tmp
info['BOUNTY'] = info['BOUNTY'].strip(u'$€') # Strip here where it isn't 'None'
hand.koBounty = int(100*Decimal(info['BOUNTY']))
hand.isKO = True
else:
hand.isKO = False
info['BIRAKE'] = info['BIRAKE'].strip(u'$€')
hand.buyin = int(100*Decimal(info['BIAMT']))
hand.fee = int(100*Decimal(info['BIRAKE']))
else:
hand.buyin = int(Decimal(info['BIAMT']))
hand.fee = 0
if key == 'LEVEL':
hand.level = info[key]
if key == 'TABLE':
if hand.tourNo != None:
hand.tablename = re.split(" ", info[key])[1]
else:
hand.tablename = info[key]
if key == 'BUTTON':
hand.buttonpos = info[key]
if key == 'MAX' and info[key] != None:
hand.maxseats = int(info[key])
if key == 'MIXED':
hand.mixed = self.mixes[info[key]] if info[key] is not None else None
if key == 'PLAY' and info['PLAY'] is not None:
# hand.currency = 'play' # overrides previously set value
hand.gametype['currency'] = 'play'
def readButton(self, hand):
m = self.re_Button.search(hand.handText)
if m:
hand.buttonpos = int(m.group('BUTTON'))
else:
log.info(_('readButton: not found'))
def readPlayerStacks(self, hand):
log.debug("readPlayerStacks")
m = self.re_PlayerInfo.finditer(hand.handText)
for a in m:
#print "DEBUG: Seat[", a.group('SEAT'), "]; PNAME[", a.group('PNAME'), "]; CASH[", a.group('CASH'), "]"
hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH'))
def markStreets(self, hand):
# PREFLOP = ** Dealing down cards **
# This re fails if, say, river is missing; then we don't get the ** that starts the river.
if hand.gametype['base'] in ("hold"):
m = re.search(r"\*\* Dealing down cards \*\*(?P<PREFLOP>.+(?=\*\* Dealing flop \*\*)|.+)"
r"(\*\* Dealing flop \*\* (?P<FLOP>\[ \S\S, \S\S, \S\S \].+(?=\*\* Dealing turn \*\*)|.+))?"
r"(\*\* Dealing turn \*\* (?P<TURN>\[ \S\S \].+(?=\*\* Dealing river \*\*)|.+))?"
r"(\*\* Dealing river \*\* (?P<RIVER>\[ \S\S \].+))?"
, hand.handText,re.DOTALL)
if m is None:
log.error("Didn't match markStreets")
raise FpdbParseError(_("No match in markStreets"))
else:
#print "DEBUG: Matched markStreets"
mg = m.groupdict()
# if 'PREFLOP' in mg:
# print "DEBUG: PREFLOP: ", [mg['PREFLOP']]
# if 'FLOP' in mg:
# print "DEBUG: FLOP: ", [mg['FLOP']]
# if 'TURN' in mg:
# print "DEBUG: TURN: ", [mg['TURN']]
# if 'RIVER' in mg:
# print "DEBUG: RIVER: ", [mg['RIVER']]
hand.addStreets(m)
def readCommunityCards(self, hand, street): # street has been matched by markStreets, so exists in this hand
if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP)
#print "DEBUG readCommunityCards:", street, hand.streets.group(street)
m = self.re_Board.search(hand.streets[street])
hand.setCommunityCards(street, m.group('CARDS').split(', '))
def readAntes(self, hand):
log.debug(_("reading antes"))
m = self.re_Antes.finditer(hand.handText)
for player in m:
#~ logging.debug("hand.addAnte(%s,%s)" %(player.group('PNAME'), player.group('ANTE')))
hand.addAnte(player.group('PNAME'), player.group('ANTE'))
def readBringIn(self, hand):
m = self.re_BringIn.search(hand.handText,re.DOTALL)
if m:
#~ logging.debug("readBringIn: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))
hand.addBringIn(m.group('PNAME'), m.group('BRINGIN'))
def readBlinds(self, hand):
liveBlind = True
for a in self.re_PostSB.finditer(hand.handText):
if liveBlind:
hand.addBlind(a.group('PNAME'), 'small blind', a.group('SB'))
liveBlind = False
else:
# Post dead blinds as ante
hand.addBlind(a.group('PNAME'), 'secondsb', a.group('SB'))
for a in self.re_PostBB.finditer(hand.handText):
hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB'))
for a in self.re_PostBoth.finditer(hand.handText):
hand.addBlind(a.group('PNAME'), 'both', a.group('SBBB'))
def readHeroCards(self, hand):
# streets PREFLOP, PREDRAW, and THIRD are special cases beacause
# we need to grab hero's cards
for street in ('PREFLOP', 'DEAL'):
if street in hand.streets.keys():
m = self.re_HeroCards.finditer(hand.streets[street])
for found in m:
# if m == None:
# hand.involved = False
# else:
hand.hero = found.group('PNAME')
newcards = found.group('NEWCARDS').split(', ')
hand.addHoleCards(street, hand.hero, closed=newcards, shown=False, mucked=False, dealt=True)
for street, text in hand.streets.iteritems():
if not text or street in ('PREFLOP', 'DEAL'): continue # already done these
m = self.re_HeroCards.finditer(hand.streets[street])
for found in m:
player = found.group('PNAME')
if found.group('NEWCARDS') is None:
newcards = []
else:
newcards = found.group('NEWCARDS').split(', ')
if found.group('OLDCARDS') is None:
oldcards = []
else:
oldcards = found.group('OLDCARDS').split(', ')
if street == 'THIRD' and len(newcards) == 3: # hero in stud game
hand.hero = player
hand.dealt.add(player) # need this for stud??
hand.addHoleCards(street, player, closed=newcards[0:2], open=[newcards[2]], shown=False, mucked=False, dealt=False)
else:
hand.addHoleCards(street, player, open=newcards, closed=oldcards, shown=False, mucked=False, dealt=False)
def readAction(self, hand, street):
m = self.re_Action.finditer(hand.streets[street])
for action in m:
acts = action.groupdict()
#print "DEBUG: acts: %s" %acts
if action.group('ATYPE') == ' raises':
hand.addRaiseBy( street, action.group('PNAME'), action.group('BET').replace(',','') )
elif action.group('ATYPE') == ' calls':
hand.addCall( street, action.group('PNAME'), action.group('BET').replace(',','') )
elif action.group('ATYPE') == ' bets':
hand.addBet( street, action.group('PNAME'), action.group('BET').replace(',','') )
elif action.group('ATYPE') == ' folds':
hand.addFold( street, action.group('PNAME'))
elif action.group('ATYPE') == ' checks':
hand.addCheck( street, action.group('PNAME'))
elif action.group('ATYPE') == ' discards':
hand.addDiscard(street, action.group('PNAME'), action.group('BET').replace(',',''), action.group('DISCARDED'))
elif action.group('ATYPE') == ' stands pat':
hand.addStandsPat( street, action.group('PNAME'))
else:
print _("DEBUG: unimplemented readAction: '%s' '%s'") %(action.group('PNAME'),action.group('ATYPE'),)
def readShowdownActions(self, hand):
# TODO: pick up mucks also??
for shows in self.re_ShowdownAction.finditer(hand.handText):
cards = shows.group('CARDS').split(', ')
hand.addShownCards(cards, shows.group('PNAME'))
def readCollectPot(self,hand):
for m in self.re_CollectPot.finditer(hand.handText):
#print "DEBUG: hand.addCollectPot(player=", m.group('PNAME'), ", pot=", m.group('POT'), ")"
hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT').replace(',',''))
def readShownCards(self,hand):
for m in self.re_ShownCards.finditer(hand.handText):
if m.group('CARDS') is not None:
cards = m.group('CARDS')
cards = cards.split(', ') # needs to be a list, not a set--stud needs the order
(shown, mucked) = (False, False)
if m.group('SHOWED') == "showed": shown = True
elif m.group('SHOWED') == "mucked": mucked = True
#print "DEBUG: hand.addShownCards(%s, %s, %s, %s)" %(cards, m.group('PNAME'), shown, mucked)
hand.addShownCards(cards=cards, player=m.group('PNAME'), shown=shown, mucked=mucked)
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="regression-test-files/stars/horse/HH20090226 Natalie V - $0.10-$0.20 - HORSE.txt")
parser.add_option("-o", "--output", dest="opath", help=_("output translation to"), default="-")
parser.add_option("-f", "--follow", dest="follow", help=_("follow (tail -f) the input"), action="store_true", default=False)
#parser.add_option("-q", "--quiet", action="store_const", const=logging.CRITICAL, dest="verbosity", default=logging.INFO)
#parser.add_option("-v", "--verbose", action="store_const", const=logging.INFO, dest="verbosity")
#parser.add_option("--vv", action="store_const", const=logging.DEBUG, dest="verbosity")
(options, args) = parser.parse_args()
e = PacificPoker(in_path = options.ipath, out_path = options.opath, follow = options.follow)

View File

@ -345,7 +345,7 @@ class PartyPoker(HandHistoryConverter):
elif info[key].find(u"")!=-1:
hand.buyinCurrency="EUR"
else:
raise FpdbParseError(_("Failed to detect currency. HID: %s: '%s'") % (hand.handid, info[key]))
raise FpdbParseError(_("Failed to detect currency. Hand ID: %s: '%s'") % (hand.handid, info[key]))
info[key] = info[key].strip(u'$€')
hand.buyin = int(100*Decimal(info[key]))
if key == 'LEVEL':

View File

@ -219,8 +219,8 @@ class PokerStars(HandHistoryConverter):
m = self.re_HandInfo.search(hand.handText,re.DOTALL)
m2 = self.re_GameInfo.search(hand.handText)
if m is None or m2 is None:
log.error("Didn't match re_HandInfo")
raise FpdbParseError(_("No match in readHandInfo."))
log.error(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
raise FpdbParseError(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
info.update(m.groupdict())
info.update(m2.groupdict())
@ -262,7 +262,7 @@ class PokerStars(HandHistoryConverter):
hand.buyinCurrency="PSFP"
else:
#FIXME: handle other currencies, play money
raise FpdbParseError(_("Failed to detect currency: '%s'") % info[key])
raise FpdbParseError(_("Failed to detect currency. Hand ID: %s: '%s'") % (hand.handid, info[key]))
info['BIAMT'] = info['BIAMT'].strip(u'$€FPP')
@ -436,7 +436,7 @@ class PokerStars(HandHistoryConverter):
elif action.group('ATYPE') == ' stands pat':
hand.addStandsPat( street, action.group('PNAME'))
else:
print (_("DEBUG: ") + _("unimplemented readAction: '%s' '%s'") % (action.group('PNAME'),action.group('ATYPE')))
print (_("DEBUG: ") + _("Unimplemented readAction: '%s' '%s'") % (action.group('PNAME'),action.group('ATYPE')))
def readShowdownActions(self, hand):

View File

@ -243,7 +243,7 @@ class RushNotes(Aux_Window):
c.execute(("SELECT handId, position, startCards, street0Aggr, tableName " +
"FROM Hands, HandsPlayers " +
"WHERE HandsPlayers.handId = Hands.id " +
"AND street0VPI = 1 " +
"AND street0VPI = True " +
"AND startCards > 0 " +
"AND playerId = %d " +
"ORDER BY startCards DESC " +

View File

@ -172,6 +172,8 @@ def compare(leaf, importer, errors, site):
# Test if this is a hand history file
if filename.endswith('.txt'):
# test if there is a .hp version of the file
print "Site: %s" % site
print "Filename: %s" % filename
importer.addBulkImportImportFileOrDir(filename, site=site)
(stored, dups, partial, errs, ttime) = importer.runImport()
@ -213,7 +215,7 @@ def usage():
print "Run tests for a sinlge site:"
print "\t./TestHandsPlayers -s <Sitename>"
print "Run tests for a sinlge file in a site:"
print "\t./TestHandsPlayers -s <Sitename> -f <filname>"
print "\t./TestHandsPlayers -s <Sitename> -f <filename>"
sys.exit(0)
def main(argv=None):
@ -255,6 +257,7 @@ def main(argv=None):
importer.setCallHud(False)
importer.setFakeCacheHHC(True)
PacificPokerErrors= FpdbError('PacificPoker')
PokerStarsErrors = FpdbError('PokerStars')
FTPErrors = FpdbError('Full Tilt Poker')
PartyPokerErrors = FpdbError('Party Poker')
@ -271,7 +274,7 @@ def main(argv=None):
WinamaxErrors = FpdbError('Winamax')
ErrorsList = [
PokerStarsErrors, FTPErrors, PartyPokerErrors,
PacificPokerErrors, PokerStarsErrors, FTPErrors, PartyPokerErrors,
BetfairErrors, OnGameErrors, AbsoluteErrors,
EverleafErrors, CarbonErrors, PKRErrors,
iPokerErrors, WinamaxErrors, UltimateBetErrors,
@ -279,6 +282,7 @@ def main(argv=None):
]
sites = {
'PacificPoker' : False,
'PokerStars' : False,
'Full Tilt Poker' : False,
'PartyPoker' : False,
@ -301,6 +305,11 @@ def main(argv=None):
else:
sites[options.sitename] = True
if sites['PacificPoker'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/PacificPoker/", compare, importer, PacificPokerErrors, "PacificPoker")
elif sites['PacificPoker'] == True and single_file_test:
walk_testfiles(options.filename, compare, importer, PacificPokerErrors, "PacificPoker")
if sites['PokerStars'] == True and not single_file_test:
walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
walk_testfiles("regression-test-files/tour/Stars/", compare, importer, PokerStarsErrors, "PokerStars")

View File

@ -31,14 +31,14 @@ class Win2day(HandHistoryConverter):
sitename = "Win2day"
filetype = "text"
codepage = "cp1252"
codepage = "utf-8"
siteID = 4
# Static regexes
#<HISTORY ID="102271403" SESSION="session31237702.xml" TABLE="Innsbruck 3" GAME="GAME_THM" GAMETYPE="GAMETYPE_REAL" GAMEKIND="GAMEKIND_CASH" TABLECURRENCY="EUR" LIMIT="NL" STAKES="0.25/0.50" DATE="1246909773" WIN="0.00" LOSS="0.50">
#'^<HISTORY ID="(?P<HID>[0-9]+)" SESSION="session[0-9]+\.xml" TABLE="(?P<TABLE>[- a-zA-Z0-9]+)" GAME="(?P<GAME>[_A-Z]+)" GAMETYPE="[_a-zA-Z]+" GAMEKIND="[_a-zA-Z]+" TABLECURRENCY="(?P<CURRENCY>[A-Z]+)" LIMIT="(?P<LIMIT>NL|PL)" STAKES="(?P<SB>[.0-9]+)/(?P<BB>[.0-9]+)" DATE="(?P<DATETIME>[0-9]+)" WIN="[.0-9]+" LOSS="[.0-9]+">$'
re_GameInfo = re.compile('^<HISTORY ID="(?P<HID>[0-9]+)" SESSION="session[0-9]+\.xml" TABLE="(?P<TABLE>[- a-zA-Z0-9]+)" GAME="(?P<GAME>[_A-Z]+)" GAMETYPE="[_a-zA-Z]+" GAMEKIND="[_a-zA-Z]+" TABLECURRENCY="(?P<CURRENCY>[A-Z]+)" LIMIT="(?P<LIMIT>NL|PL)" STAKES="(?P<SB>[.0-9]+)/(?P<BB>[.0-9]+)" DATE="(?P<DATETIME>[0-9]+)" WIN="[.0-9]+" LOSS="[.0-9]+">', re.MULTILINE)
re_GameInfo = re.compile('<HISTORY ID="(?P<HID>[0-9]+)" SESSION="session[0-9]+\.xml" TABLE="(?P<TABLE>[- a-zA-Z0-9\xc0-\xfc/.]+)" GAME="(?P<GAME>[_A-Z]+)" GAMETYPE="[_a-zA-Z]+" GAMEKIND="[_a-zA-Z]+" TABLECURRENCY="(?P<CURRENCY>[A-Z]+)" LIMIT="(?P<LIMIT>NL|PL)" STAKES="(?P<SB>[.0-9]+)/(?P<BB>[.0-9]+)" DATE="(?P<DATETIME>[0-9]+)" WIN="[.0-9]+" LOSS="[.0-9]+">', re.MULTILINE)
re_SplitHands = re.compile('</HISTORY>')
re_HandInfo = re.compile("^Table \'(?P<TABLE>[- a-zA-Z]+)\'(?P<TABLEATTRIBUTES>.+?$)?", re.MULTILINE)
re_Button = re.compile('<ACTION TYPE="HAND_DEAL" PLAYER="(?P<BUTTON>[^"]+)">\n<CARD LINK="[0-9b]+"></CARD>\n<CARD LINK="[0-9b]+"></CARD></ACTION>\n<ACTION TYPE="ACTION_', re.MULTILINE)
@ -91,7 +91,7 @@ class Win2day(HandHistoryConverter):
m = self.re_GameInfo.search(handText)
if not m:
tmp = handText[0:100]
tmp = handText[0:1000]
log.error(_("Unable to recognise gametype from: '%s'") % tmp)
log.error(_("determineGameType: Raising FpdbParseError"))
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
"""Routines for detecting and handling poker client windows for MS Windows.
"""
# Copyright 2008 - 2011, Ray E. Barker
# Copyright 2008 - 2010, Ray E. Barker
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -62,9 +62,11 @@ class Table(Table_Window):
if re.search(self.search_string, titles[hwnd], re.I):
if self.check_bad_words(titles[hwnd]):
continue
if not win32gui.IsWindowVisible(hwnd): # if window not visible, probably not a table
# if window not visible, probably not a table
if not win32gui.IsWindowVisible(hwnd):
continue
if win32gui.GetParent(hwnd) != 0: # if window is a child of another window, probably not a table
# if window is a child of another window, probably not a table
if win32gui.GetParent(hwnd) != 0:
continue
HasNoOwner = win32gui.GetWindow(hwnd, win32con.GW_OWNER) == 0
WindowStyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)

View File

@ -260,7 +260,7 @@ class Winamax(HandHistoryConverter):
hand.buyinCurrency="PSFP"
else:
#FIXME: handle other currencies (are there other currencies?)
raise FpdbParseError(_("failed to detect currency"))
raise FpdbParseError(_("Failed to detect currency. Hand ID: %s: '%s'") % (hand.handid, info[key]))
info['BIAMT'] = info['BIAMT'].strip(u'$€FPP')

View File

@ -28,7 +28,7 @@ if os.name == 'nt' and sys.version[0:3] not in ('2.5', '2.6', '2.7') and '-r' no
#print "old path =", os.environ['PATH']
dirs = re.split(os.pathsep, os.environ['PATH'])
# remove any trailing / or \ chars from dirs:
dirs = [re.sub('[\\/]$','',p) for p in dirs]
dirs = [re.sub('[\\/]$', '', p) for p in dirs]
# remove any dirs containing 'python' apart from those ending in 'python25', 'python26' or 'python':
dirs = [p for p in dirs if not re.search('python', p, re.I) or re.search('python25$', p, re.I) or re.search('python26$', p, re.I) or re.search('python27$', p, re.I)]
tmppath = ";".join(dirs)
@ -37,10 +37,10 @@ if os.name == 'nt' and sys.version[0:3] not in ('2.5', '2.6', '2.7') and '-r' no
os.environ['PATH'] = tmppath
print "Python " + sys.version[0:3] + _(' - press return to continue\n')
sys.stdin.readline()
if os.name=='nt':
os.execvpe('pythonw.exe', ('pythonw.exe', 'fpdb.pyw', '-r'), os.environ) # first arg is ignored (name of program being run)
if os.name == 'nt':
os.execvpe('pythonw.exe', ('pythonw.exe', 'fpdb.pyw', '-r'), os.environ)
else:
os.execvpe('python', ('python', 'fpdb.pyw', '-r'), os.environ) # first arg is ignored (name of program being run)
os.execvpe('python', ('python', 'fpdb.pyw', '-r'), os.environ)
else:
print _("\npython 2.5-2.7 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n")
raw_input(_("Press ENTER to continue."))
@ -67,7 +67,8 @@ import string
cl_options = string.join(sys.argv[1:])
(options, argv) = Options.fpdb_options()
import logging, logging.config
import logging
import logging.config
log = logging.getLogger("fpdb")
try:
@ -126,7 +127,7 @@ import Configuration
import Exceptions
import Stats
VERSION = "0.21 plus git"
VERSION = "0.22 plus git"
class fpdb:
@ -141,9 +142,9 @@ class fpdb:
def add_tab(self, new_page, new_tab_name):
"""adds a tab, namely creates the button and displays it and appends all the relevant arrays"""
for name in self.nb_tab_names: #todo: check this is valid
for name in self.nb_tab_names: # todo: check this is valid
if name == new_tab_name:
return # if tab already exists, just go to it
return # if tab already exists, just go to it
used_before = False
for i, name in enumerate(self.tab_names):
@ -187,6 +188,21 @@ class fpdb:
tabBox.pack_start(tabLabel, False)
eventBox.add(tabBox)
# fixme: force background state to fix problem where STATE_ACTIVE
# tab labels are black in some gtk themes, and therefore unreadable
# This behaviour is probably a bug in libwimp.dll or pygtk, but
# need to force background to avoid issues with menu labels being
# unreadable
#
# gtk.STATE_ACTIVE is a displayed, but not selected tab
# gtk.STATE_NORMAL is a displayed, selected, focussed tab
# gtk.STATE_INSENSITIVE is an inactive tab
# Insensitive/base is chosen as the background colour, because
# although not perfect, it seems to be the least instrusive.
baseNormStyle = eventBox.get_style().base[gtk.STATE_INSENSITIVE]
if baseNormStyle:
eventBox.modify_bg(gtk.STATE_ACTIVE, gtk.gdk.color_parse(str(baseNormStyle)))
if nb.get_n_pages() > 0:
tabButton = gtk.Button()
@ -205,9 +221,9 @@ class fpdb:
image = gtk.Image()
image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_SMALL_TOOLBAR)
gtk.Button.set_relief(button, gtk.RELIEF_NONE)
settings = gtk.Widget.get_settings(button);
(w,h) = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_SMALL_TOOLBAR);
gtk.Widget.set_size_request(button, w + 4, h + 4);
settings = gtk.Widget.get_settings(button)
(w, h) = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_SMALL_TOOLBAR)
gtk.Widget.set_size_request(button, w + 4, h + 4)
image.show()
iconBox.pack_start(image, True, False, 0)
button.add(iconBox)
@ -253,19 +269,19 @@ class fpdb:
db_version = ""
#if self.db is not None:
# db_version = self.db.get_version()
nums = [ (_('Operating System'), os.name)
, ('Python', sys.version[0:3])
, ('GTK+', '.'.join([str(x) for x in gtk.gtk_version]))
, ('PyGTK', '.'.join([str(x) for x in gtk.pygtk_version]))
, ('matplotlib', matplotlib_version)
, ('numpy', numpy_version)
, ('sqlite', sqlite_version)
, ('fpdb version', VERSION)
, ('database used', self.settings['db-server'])
nums = [(_('Operating System'), os.name),
('Python', sys.version[0:3]),
('GTK+', '.'.join([str(x) for x in gtk.gtk_version])),
('PyGTK', '.'.join([str(x) for x in gtk.pygtk_version])),
('matplotlib', matplotlib_version),
('numpy', numpy_version),
('sqlite', sqlite_version),
('fpdb version', VERSION),
('database used', self.settings['db-server'])
]
versions = gtk.TextBuffer()
w = 20 # width used for module names and version numbers
versions.set_text( '\n'.join( [x[0].rjust(w)+' '+ x[1].ljust(w) for x in nums] ) )
versions.set_text('\n'.join([x[0].rjust(w) + ' ' + x[1].ljust(w) for x in nums]))
view = gtk.TextView(versions)
view.set_editable(False)
view.set_justification(gtk.JUSTIFY_CENTER)
@ -273,7 +289,7 @@ class fpdb:
view.show()
dia.vbox.pack_end(view, True, True, 2)
l = gtk.Label(_("Your config file is: ")+self.config.file)
l = gtk.Label(_("Your config file is: ") + self.config.file)
l.set_alignment(0.5, 0.5)
l.show()
dia.vbox.pack_end(l, True, True, 2)
@ -332,10 +348,10 @@ class fpdb:
# save updated config
self.config.save()
self.load_profile()
for name in self.config.supported_databases: #db_ip/db_user/db_pass/db_server
log.info('fpdb: name,desc='+name+','+self.config.supported_databases[name].db_desc)
for name in self.config.supported_databases: # db_ip/db_user/db_pass/db_server
log.info('fpdb: name,desc=' + name + ',' + self.config.supported_databases[name].db_desc)
else:
log.info(_('guidb response was ')+str(response))
log.info(_('guidb response was ') + str(response))
self.release_global_lock()
@ -344,17 +360,17 @@ class fpdb:
self.warning_box(_("Cannot open Database Maintenance window because other windows have been opened. Re-start fpdb to use this option."))
def dia_database_stats(self, widget, data=None):
self.warning_box(str=_("Number of Hands: ")+str(self.db.getHandCount())+
_("\nNumber of Tourneys: ")+str(self.db.getTourneyCount())+
_("\nNumber of TourneyTypes: ")+str(self.db.getTourneyTypeCount()),
self.warning_box(str=_("Number of Hands: ") + str(self.db.getHandCount()) +
_("\nNumber of Tourneys: ") + str(self.db.getTourneyCount()) +
_("\nNumber of TourneyTypes: ") + str(self.db.getTourneyTypeCount()),
diatitle=_("Database Statistics"))
#end def dia_database_stats
def diaHudConfigurator(self, widget, data=None):
"""Opens dialog to set parameters (game category, row count, column count for HUD stat configurator"""
self.hudConfiguratorRows=None
self.hudConfiguratorColumns=None
self.hudConfiguratorGame=None
self.hudConfiguratorRows = None
self.hudConfiguratorColumns = None
self.hudConfiguratorGame = None
diaSelections = gtk.Dialog(_("HUD Configurator - choose category"),
self.window,
@ -362,16 +378,14 @@ class fpdb:
(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT,
gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
label=gtk.Label(_("Note that this dialogue will overwrite an existing config if one has been made already. ") +
_("Abort now if you don't want that.") + "\n" +
_("Please select the game category for which you want to configure HUD stats and the number of rows and columns:"))
label = gtk.Label(_("Please select the game category for which you want to configure HUD stats:"))
diaSelections.vbox.add(label)
label.show()
comboGame = gtk.combo_box_new_text()
comboGame.connect("changed", self.hudConfiguratorComboSelection)
diaSelections.vbox.add(comboGame)
games=self.config.get_supported_games()
games = self.config.get_supported_games()
for game in games:
comboGame.append_text(game)
comboGame.set_active(0)
@ -380,36 +394,39 @@ class fpdb:
comboRows = gtk.combo_box_new_text()
comboRows.connect("changed", self.hudConfiguratorComboSelection)
diaSelections.vbox.add(comboRows)
for i in range(1,8):
comboRows.append_text(_("%d rows") % i)
for i in range(1, 8):
comboRows.append_text(str(i) + " rows")
comboRows.set_active(0)
comboRows.show()
comboColumns = gtk.combo_box_new_text()
comboColumns.connect("changed", self.hudConfiguratorComboSelection)
diaSelections.vbox.add(comboColumns)
for i in range(1,8):
comboColumns.append_text("%d columns" % i)
for i in range(1, 8):
comboColumns.append_text(str(i) + " columns")
comboColumns.set_active(0)
comboColumns.show()
response=diaSelections.run()
response = diaSelections.run()
diaSelections.destroy()
if response == gtk.RESPONSE_ACCEPT and self.hudConfiguratorRows!=None and self.hudConfiguratorColumns!=None and self.hudConfiguratorGame!=None:
if (response == gtk.RESPONSE_ACCEPT and
self.hudConfiguratorRows != None and
self.hudConfiguratorColumns != None and
self.hudConfiguratorGame != None):
#print "clicked ok and selected:", self.hudConfiguratorGame,"with", str(self.hudConfiguratorRows), "rows and", str(self.hudConfiguratorColumns), "columns"
self.diaHudConfiguratorTable()
#end def diaHudConfigurator
def hudConfiguratorComboSelection(self, widget):
#TODO: remove this and handle it directly in diaHudConfigurator
result=widget.get_active_text()
result = widget.get_active_text()
if result.endswith(" rows"):
self.hudConfiguratorRows=int(result[0])
self.hudConfiguratorRows = int(result[0])
elif result.endswith(" columns"):
self.hudConfiguratorColumns=int(result[0])
self.hudConfiguratorColumns = int(result[0])
else:
self.hudConfiguratorGame=result
self.hudConfiguratorGame = result
#end def hudConfiguratorComboSelection
def diaHudConfiguratorTable(self):
@ -422,47 +439,55 @@ class fpdb:
(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT,
gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
label=gtk.Label(_("Please choose the stats you wish to use in the below table."))
label = gtk.Label(_("Please choose the stats you wish to use in the below table."))
diaHudTable.vbox.add(label)
label.show()
label=gtk.Label(_("Note that you may not select any stat more than once or it will crash."))
label = gtk.Label(_("Note that you may not select any stat more than once or it will crash."))
diaHudTable.vbox.add(label)
label.show()
label=gtk.Label(_("It is not currently possible to select \"empty\" or anything else to that end."))
label = gtk.Label(_("It is not currently possible to select \"empty\" or anything else to that end."))
diaHudTable.vbox.add(label)
label.show()
label=gtk.Label(_("To configure things like colouring you will still have to use the Preferences dialogue or manually edit your HUD_config.xml."))
label = gtk.Label(_("To configure things like colouring you will still have to use the Preferences dialogue or manually edit your HUD_config.xml."))
diaHudTable.vbox.add(label)
label.show()
self.hudConfiguratorTableContents=[]
table= gtk.Table(rows=self.hudConfiguratorRows+1, columns=self.hudConfiguratorColumns+1, homogeneous=True)
self.hudConfiguratorTableContents = []
table = gtk.Table(rows=self.hudConfiguratorRows + 1, columns=self.hudConfiguratorColumns + 1, homogeneous=True)
statDir=dir(Stats)
statDict={}
statDir = dir(Stats)
statDict = {}
for attr in statDir:
if attr.startswith('__'): continue
if attr.startswith('__'):
continue
if attr in ("Charset", "Configuration", "Database", "GInitiallyUnowned", "gtk", "pygtk",
"player", "c", "db_connection", "do_stat", "do_tip", "stat_dict",
"h", "re", "re_Percent", "re_Places", "L10n", "log", "encoder", "codecs", "_", "sys", "logging"): continue
statDict[attr]=eval("Stats.%s.__doc__" % (attr))
"h", "re", "re_Percent", "re_Places", ):
continue
statDict[attr] = eval("Stats.%s.__doc__" % (attr))
for rowNumber in range(self.hudConfiguratorRows+1):
newRow=[]
for columnNumber in range(self.hudConfiguratorColumns+1):
if rowNumber==0:
if columnNumber==0:
for rowNumber in range(self.hudConfiguratorRows + 1):
newRow = []
for columnNumber in range(self.hudConfiguratorColumns + 1):
if rowNumber == 0:
if columnNumber == 0:
pass
else:
label=gtk.Label(_("column %d") % columnNumber)
table.attach(child=label, left_attach=columnNumber, right_attach=columnNumber+1, top_attach=rowNumber, bottom_attach=rowNumber+1)
label = gtk.Label("column " + str(columnNumber))
table.attach(child=label, left_attach=columnNumber,
right_attach=columnNumber + 1,
top_attach=rowNumber,
bottom_attach=rowNumber + 1)
label.show()
elif columnNumber==0:
label=gtk.Label(_("row %d") % rowNumber)
table.attach(child=label, left_attach=columnNumber, right_attach=columnNumber+1, top_attach=rowNumber, bottom_attach=rowNumber+1)
elif columnNumber == 0:
label = gtk.Label("row " + str(rowNumber))
table.attach(child=label, left_attach=columnNumber,
right_attach=columnNumber + 1,
top_attach=rowNumber,
bottom_attach=rowNumber + 1)
label.show()
else:
comboBox = gtk.combo_box_new_text()
@ -472,15 +497,18 @@ class fpdb:
comboBox.set_active(0)
newRow.append(comboBox)
table.attach(child=comboBox, left_attach=columnNumber, right_attach=columnNumber+1, top_attach=rowNumber, bottom_attach=rowNumber+1)
table.attach(child=comboBox, left_attach=columnNumber,
right_attach=columnNumber + 1,
top_attach=rowNumber,
bottom_attach=rowNumber + 1)
comboBox.show()
if rowNumber!=0:
if rowNumber != 0:
self.hudConfiguratorTableContents.append(newRow)
diaHudTable.vbox.add(table)
table.show()
response=diaHudTable.run()
response = diaHudTable.run()
diaHudTable.destroy()
if response == gtk.RESPONSE_ACCEPT:
@ -490,16 +518,16 @@ class fpdb:
def storeNewHudStatConfig(self):
"""stores selections made in diaHudConfiguratorTable"""
self.obtain_global_lock("diaHudConfiguratorTable")
statTable=[]
statTable = []
for row in self.hudConfiguratorTableContents:
newRow=[]
newRow = []
for column in row:
newField = column.get_active_text()
newRow.append(newField)
statTable.append(newRow)
self.config.editStats(self.hudConfiguratorGame,statTable)
self.config.save() #TODO: make it not store in horrible formatting
self.config.editStats(self.hudConfiguratorGame, statTable)
self.config.save() # TODO: make it not store in horrible formatting
self.release_global_lock()
#end def storeNewHudStatConfig
@ -545,7 +573,7 @@ class fpdb:
diastring = _("Please confirm that you want to (re-)create the tables.") \
+ (_(" If there already are tables in the database %s on %s they will be deleted and you will have to re-import your histories.\n") % (self.db.database, self.db.host)) \
+ _("This may take a while.")
dia_confirm.format_secondary_text(diastring)#todo: make above string with bold for db, host and deleted
dia_confirm.format_secondary_text(diastring) # todo: make above string with bold for db, host and deleted
# disable windowclose, do not want the the underlying processing interrupted mid-process
dia_confirm.set_deletable(False)
@ -575,7 +603,7 @@ class fpdb:
def dia_recreate_hudcache(self, widget, data=None):
if self.obtain_global_lock("dia_recreate_hudcache"):
self.dia_confirm = gtk.MessageDialog(parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format=_("Confirm recreating HUD cache"))
self.dia_confirm = gtk.MessageDialog(parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Confirm recreating HUD cache")
diastring = _("Please confirm that you want to re-create the HUD cache.")
self.dia_confirm.format_secondary_text(diastring)
# disable windowclose, do not want the the underlying processing interrupted mid-process
@ -583,7 +611,7 @@ class fpdb:
hb1 = gtk.HBox(True, 1)
self.h_start_date = gtk.Entry(max=12)
self.h_start_date.set_text( self.db.get_hero_hudcache_start() )
self.h_start_date.set_text(self.db.get_hero_hudcache_start())
lbl = gtk.Label(_(" Hero's cache starts: "))
btn = gtk.Button()
btn.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
@ -597,7 +625,7 @@ class fpdb:
hb2 = gtk.HBox(True, 1)
self.start_date = gtk.Entry(max=12)
self.start_date.set_text( self.db.get_hero_hudcache_start() )
self.start_date.set_text(self.db.get_hero_hudcache_start())
lbl = gtk.Label(_(" Villains' cache starts: "))
btn = gtk.Button()
btn.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON))
@ -617,7 +645,7 @@ class fpdb:
while gtk.events_pending():
gtk.main_iteration_do(False)
self.db.rebuild_hudcache( self.h_start_date.get_text(), self.start_date.get_text() )
self.db.rebuild_hudcache(self.h_start_date.get_text(), self.start_date.get_text())
elif response == gtk.RESPONSE_NO:
print _('User cancelled rebuilding hud cache')
@ -627,11 +655,11 @@ class fpdb:
def dia_rebuild_indexes(self, widget, data=None):
if self.obtain_global_lock("dia_rebuild_indexes"):
self.dia_confirm = gtk.MessageDialog(parent=self.window
,flags=gtk.DIALOG_DESTROY_WITH_PARENT
,type=gtk.MESSAGE_WARNING
,buttons=(gtk.BUTTONS_YES_NO)
,message_format=_("Confirm rebuilding database indexes"))
self.dia_confirm = gtk.MessageDialog(parent=self.window,
flags=gtk.DIALOG_DESTROY_WITH_PARENT,
type=gtk.MESSAGE_WARNING,
buttons=(gtk.BUTTONS_YES_NO),
message_format=_("Confirm rebuilding database indexes"))
diastring = _("Please confirm that you want to rebuild the database indexes.")
self.dia_confirm.format_secondary_text(diastring)
# disable windowclose, do not want the the underlying processing interrupted mid-process
@ -695,7 +723,6 @@ class fpdb:
self.logbuffer.insert(end_iter, text)
self.logview.scroll_to_mark(self.logbuffer.get_insert(), 0)
def process_close_messages(self):
# check for close messages
try:
@ -850,28 +877,27 @@ class fpdb:
return menubar
#end def get_menu
def load_profile(self, create_db = False):
def load_profile(self, create_db=False):
"""Loads profile from the provided path name."""
self.config = Configuration.Config(file=options.config, dbname=options.dbname)
if self.config.file_error:
self.warning_box(_("There is an error in your config file\n") + self.config.file
+ _("\n\nError is: ") + str(self.config.file_error)
, diatitle=_("CONFIG FILE ERROR"))
+ _("\n\nError is: ") + str(self.config.file_error),
diatitle=_("CONFIG FILE ERROR"))
sys.exit()
log = Configuration.get_logger("logging.conf", "fpdb", log_dir=self.config.dir_log)
print (_("Logfile is %s\n") % os.path.join(self.config.dir_log, self.config.log_file))
if self.config.example_copy:
self.info_box(_("Config file")
, _("has been created at:\n%s.\n") % self.config.file
self.info_box(_("Config file"),
_("has been created at:\n%s.\n") % self.config.file
+ _("Edit your screen_name and hand history path in the supported_sites section of the Preferences window (Main menu) before trying to import hands."))
self.settings = {}
self.settings['global_lock'] = self.lock
if (os.sep=="/"):
self.settings['os']="linuxmac"
if (os.sep == "/"):
self.settings['os'] = "linuxmac"
else:
self.settings['os']="windows"
self.settings['os'] = "windows"
self.settings.update({'cl_options': cl_options})
self.settings.update(self.config.get_db_parameters())
@ -881,10 +907,10 @@ class fpdb:
if self.db is not None and self.db.is_connected():
self.db.disconnect()
self.sql = SQL.Sql(db_server = self.settings['db-server'])
self.sql = SQL.Sql(db_server=self.settings['db-server'])
err_msg = None
try:
self.db = Database.Database(self.config, sql = self.sql)
self.db = Database.Database(self.config, sql=self.sql)
if self.db.get_backend_name() == 'SQLite':
# tell sqlite users where the db file is
print (_("Connected to SQLite: %s") % self.db.db_path)
@ -921,7 +947,8 @@ class fpdb:
# sys.stderr.write("Failed to connect to %s database with username %s." % (self.settings['db-server'], self.settings['db-user']))
if self.db is not None and self.db.wrongDbVersion:
diaDbVersionWarning = gtk.Dialog(title=_("Strong Warning - Invalid database version"), parent=None, flags=0, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
diaDbVersionWarning = gtk.Dialog(title=_("Strong Warning - Invalid database version"),
parent=None, flags=0, buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK))
label = gtk.Label(_("An invalid DB version or missing tables have been detected."))
diaDbVersionWarning.vbox.add(label)
@ -946,14 +973,14 @@ class fpdb:
if self.db is not None and self.db.is_connected():
self.status_bar.set_text(_("Status: Connected to %s database named %s on host %s")
% (self.db.get_backend_name(),self.db.database, self.db.host))
% (self.db.get_backend_name(), self.db.database, self.db.host))
# rollback to make sure any locks are cleared:
self.db.rollback()
self.validate_config()
def obtain_global_lock(self, source):
ret = self.lock.acquire(source=source) # will return false if lock is already held
ret = self.lock.acquire(source=source) # will return false if lock is already held
if ret:
print (_("\nGlobal lock taken by %s") % source)
self.lockTakenBy=source
@ -978,7 +1005,7 @@ class fpdb:
import _mysql_exceptions
if self.db is not None and self.db.is_connected():
self.db.disconnect()
except _mysql_exceptions.OperationalError: # oh, damn, we're already disconnected
except _mysql_exceptions.OperationalError: # oh, damn, we're already disconnected
pass
else:
if self.db is not None and self.db.is_connected():
@ -987,12 +1014,12 @@ class fpdb:
pass
self.statusIcon.set_visible(False)
self.window.destroy() # explicitly destroy to allow child windows to close cleanly
self.window.destroy() # explicitly destroy to allow child windows to close cleanly
gtk.main_quit()
def release_global_lock(self):
self.lock.release()
self.lockTakenBy=None
self.lockTakenBy = None
print _("Global lock released.\n")
def tab_auto_import(self, widget, data=None):
@ -1121,7 +1148,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
options.xloc = 0
if options.yloc is None:
options.yloc = 0
self.window.move(options.xloc,options.yloc)
self.window.move(options.xloc, options.yloc)
# connect to required events
self.window.connect("delete_event", self.delete_event)
@ -1131,8 +1158,10 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
self.window.set_border_width(1)
defx, defy = 900, 720
sx, sy = gtk.gdk.screen_width(), gtk.gdk.screen_height()
if sx < defx: defx = sx
if sy < defy: defy = sy
if sx < defx:
defx = sx
if sy < defy:
defy = sy
self.window.set_default_size(defx, defy)
self.window.set_resizable(True)
@ -1170,7 +1199,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
self.window.show()
self.visible = True # Flip on
self.load_profile(create_db = True)
self.load_profile(create_db=True)
# setup error logging
if not options.errorsToConsole:
@ -1183,7 +1212,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
# set up tray-icon and menu
self.statusIcon = gtk.StatusIcon()
# use getcwd() here instead of sys.path[0] so that py2exe works:
cards = os.path.join(os.getcwd(), '..','gfx','fpdb-cards.png')
cards = os.path.join(os.getcwd(), '..', 'gfx', 'fpdb-cards.png')
if os.path.exists(cards):
self.statusIcon.set_from_file(cards)
self.window.set_icon_from_file(cards)
@ -1257,7 +1286,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
# Tell GTK not to propagate this signal any further
return True
def statusicon_menu(self, widget, button, time, data = None):
def statusicon_menu(self, widget, button, time, data=None):
# we don't need to pass data here, since we do keep track of most all
# our variables .. the example code that i looked at for this
# didn't use any long scope variables.. which might be an alright
@ -1268,7 +1297,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
data.popup(None, None, None, 3, time)
pass
def statusicon_activate(self, widget, data = None):
def statusicon_activate(self, widget, data=None):
# Let's allow the tray icon to toggle window visibility, the way
# most other apps work
if self.visible:
@ -1277,15 +1306,17 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
self.window.present()
def info_box(self, str1, str2):
diapath = gtk.MessageDialog( parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_INFO
, buttons=(gtk.BUTTONS_OK), message_format=str1 )
diapath = gtk.MessageDialog(parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_INFO,
buttons=(gtk.BUTTONS_OK), message_format=str1)
diapath.format_secondary_text(str2)
response = diapath.run()
diapath.destroy()
return response
def warning_box(self, str, diatitle=_("FPDB WARNING")):
diaWarning = gtk.Dialog(title=diatitle, parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
diaWarning = gtk.Dialog(title=diatitle, parent=self.window,
flags=gtk.DIALOG_DESTROY_WITH_PARENT,
buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK))
label = gtk.Label(str)
diaWarning.vbox.add(label)
@ -1296,31 +1327,11 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
return response
def validate_config(self):
# can this be removed now?
if self.config.get_import_parameters().get('saveStarsHH'):
hhbase = self.config.get_import_parameters().get("hhArchiveBase")
hhbase = os.path.expanduser(hhbase)
#hhdir = os.path.join(hhbase,site)
hhdir = hhbase
if not os.path.isdir(hhdir):
diapath = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Setup hh dir")
diastring = _("WARNING: Unable to find output hand history directory %s\n\n Press YES to create this directory, or NO to select a new one.") % hhdir
diapath.format_secondary_text(diastring)
response = diapath.run()
diapath.destroy()
if response == gtk.RESPONSE_YES:
try:
os.makedirs(hhdir)
except:
self.warning_box(_("WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed."))
elif response == gtk.RESPONSE_NO:
self.select_hhArchiveBase()
# check if sites in config file are in DB
for site in self.config.get_supported_sites(True): # get site names from config file
try:
self.config.get_site_id(site) # and check against list from db
except KeyError , exc:
except KeyError, exc:
log.warning("site %s missing from db" % site)
dia = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Unknown Site")
diastring = _("WARNING: Unable to find site '%s'\n\nPress YES to add this site to the database.") % site
@ -1331,15 +1342,15 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
self.add_site(site)
def add_site(self, site):
dia = gtk.Dialog( title="Add Site", parent=self.window
, flags=gtk.DIALOG_DESTROY_WITH_PARENT
, buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT
,gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT)
dia = gtk.Dialog(title="Add Site", parent=self.window,
flags=gtk.DIALOG_DESTROY_WITH_PARENT,
buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT,
gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT)
)
h = gtk.HBox()
dia.vbox.pack_start(h, padding=5) # sets horizontal padding
label = gtk.Label( _("\nEnter short code for %s\n(up to 3 characters):\n") % site )
label = gtk.Label(_("\nEnter short code for %s\n(up to 3 characters):\n") % site)
h.pack_start(label, padding=20) # sets horizontal padding
#label.set_alignment(1.0, 0.5)
@ -1349,8 +1360,8 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
e_code.set_width_chars(5)
h.pack_start(e_code, True, False, padding=5)
label = gtk.Label( "" )
dia.vbox.add(label) # create space below entry, maybe padding arg above makes this redundant?
label = gtk.Label("")
dia.vbox.add(label) # create space below entry, maybe padding arg above makes this redundant?
dia.show_all()
response = dia.run()

View File

@ -444,13 +444,6 @@ class Importer:
log.info((_("Converting %s") % file) + " (" + str(q.qsize()) + ")")
else:
log.info(_("Converting %s") % file)
hhbase = self.config.get_import_parameters().get("hhArchiveBase")
hhbase = os.path.expanduser(hhbase)
hhdir = os.path.join(hhbase,site)
try:
out_path = os.path.join(hhdir, file.split(os.path.sep)[-2]+"-"+os.path.basename(file))
except:
out_path = os.path.join(hhdir, "x"+strftime("%d-%m-%y")+os.path.basename(file))
filter_name = filter.replace("ToFpdb", "")
@ -462,9 +455,7 @@ class Importer:
idx = self.pos_in_file[file]
else:
self.pos_in_file[file] = 0
hhc = obj( self.config, in_path = file, out_path = out_path, index = idx
, starsArchive = self.settings['starsArchive'], ftpArchive = self.settings['ftpArchive'],
sitename = site )
hhc = obj( self.config, in_path = file, index = idx, starsArchive = self.settings['starsArchive'], ftpArchive = self.settings['ftpArchive'], sitename = site )
if hhc.getStatus():
handlist = hhc.getProcessedHands()
self.pos_in_file[file] = hhc.getLastCharacterRead()

View File

@ -153,9 +153,9 @@ or None if we fail to get the info """
def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText)
if m is None:
logging.error(_("Didn't match re_HandInfo"))
logging.error(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
logging.info(hand.handText)
raise FpdbParseError(_("Didn't match re_HandInfo"))
raise FpdbParseError(_("No match in readHandInfo: '%s'") % hand.handText[0:100])
mg = m.groupdict()
#print "DEBUG: m.groupdict(): %s" % mg
hand.handid = m.group('HID')

Binary file not shown.

Binary file not shown.

View File

@ -1,20 +1,20 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Steffen Schaumburg <steffen@schaumburger.info>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: Free Poker Database\n"
"POT-Creation-Date: 2011-03-10 05:10+CET\n"
"PO-Revision-Date: 2011-03-10 01:42+0000\n"
"Last-Translator: steffen123 <steffen@schaumburger.info>\n"
"Language-Team: German (Germany) <fpdb-main@lists.sourceforge.net>\n"
"Language: de_DE\n"
"POT-Creation-Date: 2011-03-12 21:23+CET\n"
"PO-Revision-Date: 2011-03-11 08:46+0200\n"
"Last-Translator: Steffen Schaumburg <steffen@schaumburger.info>\n"
"Language-Team: Fpdb\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Virtaal 0.6.1\n"
"Generated-By: pygettext.py 1.5\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: AbsoluteToFpdb.py:139 AbsoluteToFpdb.py:141 BetfairToFpdb.py:76
#: BetfairToFpdb.py:78 CarbonToFpdb.py:130 CarbonToFpdb.py:132
@ -37,25 +37,25 @@ msgstr "Konnte Gametype in '%s' nicht erkennen"
msgid "determineGameType: Raising FpdbParseError"
msgstr "determineGameType: FpdbParseError"
#: AbsoluteToFpdb.py:204
msgid "readHandInfo: Didn't match: '%s'"
msgstr "readHandInfo: '%s' nicht erkannt"
#: AbsoluteToFpdb.py:205
msgid "Absolute: Didn't match re_HandInfo: '%s'"
msgstr "Absolute: re_HandInfo konnte '%s' nicht erkennen"
#: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
#: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
#: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: iPokerToFpdb.py:158
msgid "No match in readHandInfo: '%s'"
msgstr "Keine Treffer für re_HandInfo: '%s'"
#: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename"
msgstr ""
msgid "File name didn't match re_*InfoFromFilename"
msgstr "Dateiname wurde von re_*InfoFromFilename nicht erkannt"
#: AbsoluteToFpdb.py:208
msgid "File name: %s"
msgstr "Dateiname: %s"
#: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'"
msgstr ""
msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr "re*InfoFromFilename konnte '%s' nicht erkennen"
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
#: OnGameToFpdb.py:294 PokerStarsToFpdb.py:357 Win2dayToFpdb.py:203
@ -65,11 +65,11 @@ msgstr "Lese Antes"
#: AbsoluteToFpdb.py:287 BetfairToFpdb.py:160 FulltiltToFpdb.py:426
msgid "Player bringing in: %s for %s"
msgstr ""
msgstr "Spieler macht Bring In: %s für %s"
#: AbsoluteToFpdb.py:290 EverleafToFpdb.py:230
msgid "No bringin found."
msgstr "Kein Bringin gefunden."
msgstr "Kein Bring In gefunden."
#: AbsoluteToFpdb.py:297 EverleafToFpdb.py:237
msgid "No small blind"
@ -79,24 +79,25 @@ msgstr "Keine Small Blind"
msgid "Absolute readStudPlayerCards is only a stub."
msgstr ""
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234
#: EverestToFpdb.py:235 EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
msgstr ""
#: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: '%s' '%s'"
msgstr "Nicht implementierte readAction: '%s' '%s'"
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:298
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:297
#: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history"
msgstr ""
msgstr "Zu lesende Hand History"
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:299
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:298
#: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to"
msgstr ""
msgstr "Ausgabepfad"
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:300
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:299
#: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input"
@ -107,17 +108,7 @@ msgid "Could not find file %s"
msgstr "Konnte Datei %s nicht finden"
#: Anonymise.py:55
msgid "Output being written to"
msgstr ""
#: BetfairToFpdb.py:108 CarbonToFpdb.py:163 EverestToFpdb.py:145
#: EverleafToFpdb.py:145 iPokerToFpdb.py:156 iPokerToFpdb.py:158
msgid "Didn't match re_HandInfo"
msgstr "Keine Treffer für re_HandInfo"
#: BetfairToFpdb.py:109 CarbonToFpdb.py:165 EverestToFpdb.py:147
#: PokerStarsToFpdb.py:223
msgid "No match in readHandInfo."
msgid "Output being written to %s"
msgstr ""
#: BetfairToFpdb.py:123
@ -135,12 +126,7 @@ msgstr "Kein Bringin gefunden"
#: PokerStarsToFpdb.py:439 Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
#: test_Database.py:50 test_Database.py:51
msgid "DEBUG: "
msgstr ""
#: BetfairToFpdb.py:199 OnGameToFpdb.py:337 PokerStarsToFpdb.py:439
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
msgstr "DEBUG: "
#: Card.py:431
msgid "fpdb card encoding(same as pokersource)"
@ -235,18 +221,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults."
msgstr ""
#: Configuration.py:714
#: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s"
msgstr "Lese Konfigurationsdatei %s"
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
"\n"
"Lese Konfigurationsdatei %s\n"
#: Configuration.py:721
msgid "Error parsing %s. See error log file."
msgstr ""
@ -369,23 +347,20 @@ msgid "Create foreign key failed: "
msgstr "Erstellen des Foreign Keys fehlgeschlagen: "
#: Database.py:1172
#, fuzzy
msgid "Creating MySQL index %s %s"
msgstr "Erstelle MySQL Index %s %s"
#: Database.py:1181
#, fuzzy
msgid "Creating PostgreSQL index "
msgstr "Erstelle Foreign Key "
msgstr "Erstelle PostgreSQL index"
#: Database.py:1186 Database.py:1337 Database.py:1346 Database.py:1354
msgid "Create index failed: "
msgstr "Erstellen des Indexes fehlgeschlagen: "
#: Database.py:1194
#, fuzzy
msgid "After import took %s seconds"
msgstr "Zeit zwischen Imports in Sekunden:"
msgstr "Bearbeitung nach Import dauerte %s Sekunden:"
#: Database.py:1227 Database.py:1228
msgid "Finished recreating tables"
@ -536,39 +511,39 @@ msgstr ""
msgid "***Error sending finish: "
msgstr ""
#: Database.py:2401
#: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney"
msgstr ""
#: Database.py:2414
#: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr ""
#: Database.py:2540
#: Database.py:2554
msgid "HandToWrite.init error: "
msgstr ""
#: Database.py:2590
#: Database.py:2604
msgid "HandToWrite.set_all error: "
msgstr ""
#: Database.py:2621
#: Database.py:2635
msgid "nutOmatic is id_player = %d"
msgstr ""
#: Database.py:2629
#: Database.py:2643
msgid "query plan: "
msgstr ""
#: Database.py:2638
#: Database.py:2652
msgid "cards ="
msgstr ""
#: Database.py:2641
#: Database.py:2655
msgid "get_stats took: %4.3f seconds"
msgstr ""
#: Database.py:2643
#: Database.py:2657
msgid "press enter to continue"
msgstr ""
@ -580,6 +555,10 @@ msgstr ""
msgid "Everleaf readStudPlayerCards is only a stub."
msgstr ""
#: EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
msgstr "Nicht implementierte readAction: %s %s"
#: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s"
msgstr ""
@ -600,31 +579,31 @@ msgstr "_Limits anzeigen"
msgid "Show Number of _Players"
msgstr "_Spielerzahl anzeigen"
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "And:"
msgstr "Und:"
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "Between:"
msgstr "Zwischen:"
#: Filters.py:55
msgid "Games:"
msgstr "Spiele:"
#: Filters.py:55 GuiPrefs.py:33
msgid "Games"
msgstr "Spiele"
#: Filters.py:55 TourneyFilters.py:50
#: Filters.py:55 GuiPrefs.py:33
msgid "Sites"
msgstr "Seiten"
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:"
msgstr "Held:"
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr "Seien:"
#: Filters.py:56
msgid "Limits:"
msgstr "Limits:"
#: Filters.py:56 TourneyFilters.py:50
#: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:"
msgstr "Spielerzahl:"
@ -636,7 +615,7 @@ msgstr "Gruppieren:"
msgid "Show Position Stats"
msgstr "Positionen Anzeigen"
#: Filters.py:58 TourneyFilters.py:51
#: Filters.py:58 TourneyFilters.py:53
msgid "Date:"
msgstr "Datum:"
@ -656,7 +635,7 @@ msgstr "Tourney"
msgid "New packing box created!"
msgstr ""
#: Filters.py:106 TourneyFilters.py:114
#: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr "Entweder 0 oder mehr als eine Seite wurden (%s) erkannt"
@ -793,7 +772,7 @@ msgstr ""
#: FulltiltToFpdb.py:267
#, fuzzy
msgid "readHandInfo: Raising FpdbParseError"
msgid "Raising FpdbParseError"
msgstr "parseSummary: FpdbParseError"
#: FulltiltToFpdb.py:369
@ -873,9 +852,8 @@ msgid " Stop _Auto Import "
msgstr " _Autoimport Anhalten "
#: GuiAutoImport.py:203
#, fuzzy
msgid "Detecting hh directory for site: '%s'"
msgstr "Erstelle Verzeichnis \"%s\""
msgstr "Untersuche HH-Verzeichnis für Seite: '%s'"
#: GuiAutoImport.py:242
msgid ""
@ -926,9 +904,8 @@ msgstr ""
" * Autoimport anhalten: HUD ist bereits beendet"
#: GuiAutoImport.py:316
#, fuzzy
msgid "%s auto-import:"
msgstr "Autoimport"
msgstr "%s Autoimport:"
#: GuiAutoImport.py:325
msgid "Browse..."
@ -1220,19 +1197,20 @@ msgstr "DB Beschreibung"
#: GuiDatabase.py:462
msgid "Host Computer"
msgstr ""
msgstr "Host"
#: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s"
msgstr ""
#, fuzzy
msgid "addDB.run: response is %s, accept is %s"
msgstr "addDB.run: Antwort ist %s, OK ist %s"
#: GuiDatabase.py:495
msgid "start creating new db"
msgstr ""
msgstr "Beginne neue DB zu erstellen"
#: GuiDatabase.py:514
msgid "tested new db, result=%s"
msgstr ""
msgstr "Neue DB getestet, Ergebnis=%s"
#: GuiDatabase.py:517
msgid "Database created"
@ -1244,7 +1222,7 @@ msgstr "Datenbankerstellung fehlgeschlagen"
#: GuiDatabase.py:533
msgid "check_fields: starting"
msgstr ""
msgstr "check_fields: starte"
#: GuiDatabase.py:539
msgid "No Database Name given"
@ -1272,7 +1250,7 @@ msgstr "Unbekannter Datenbanktyp ausgewählt"
#: GuiDatabase.py:569
msgid "check_fields: open dialog"
msgstr ""
msgstr "check_fields: Öffnen-Dialog"
#: GuiDatabase.py:578
msgid "Do you want to try again?"
@ -1284,7 +1262,7 @@ msgstr ""
#: GuiDatabase.py:585
msgid "check_fields: destroy dialog"
msgstr ""
msgstr "check_fields: Dialog beenden"
#: GuiDatabase.py:589
msgid "check_fields: returning ok as %s, try_again as %s"
@ -1300,105 +1278,105 @@ msgstr ""
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n"
" install numpy and matplotlib if you want to use graphs."
"Failed to load libs for graphing, graphing will not function. Please install "
"numpy and matplotlib if you want to use graphs."
msgstr ""
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51
#: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
msgid ""
"This is of no consequence for other parts of the program, e.g. import \n"
" and HUD are NOT affected by this problem."
"This is of no consequence for other parts of the program, e.g. import and "
"HUD are NOT affected by this problem."
msgstr ""
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
#: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph"
msgstr "_Graph auffrischen"
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File"
msgstr "_Exportieren"
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232
#: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: "
msgstr "***Fehler: "
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159
#: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars"
msgstr ""
msgstr "Keine Seiten ausgewählt - Standard ist PokerStars"
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164
#: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271
msgid "No player ids found"
msgstr "Keine Player IDs gefunden"
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218
msgid "No limits found"
msgstr "Keine Limits gefunden"
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174
#: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s"
msgstr "Graph erstellt in: %s"
#: GuiGraphViewer.py:193
#: GuiGraphViewer.py:191
msgid "Hands"
msgstr ""
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182
#: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found"
msgstr ""
#: GuiGraphViewer.py:221
#: GuiGraphViewer.py:219
msgid ""
"Hands: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiGraphViewer.py:222
#: GuiGraphViewer.py:220
msgid "Showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:223
#: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:231
#: GuiGraphViewer.py:229
msgid "Profit graph for ring games"
msgstr ""
#: GuiGraphViewer.py:234
#: GuiGraphViewer.py:232
msgid ""
"Hands: %d\n"
"Profit (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:236
#: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:238
#: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276
#: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:"
msgstr ""
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289
#: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported"
msgstr ""
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307
#: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created"
msgstr ""
msgstr "Graph erstellt"
#: GuiImapFetcher.py:40
msgid "To cancel just close this tab."
msgstr ""
msgstr "Zum Abbrechen dieses Tab schließen."
#: GuiImapFetcher.py:43
msgid "_Save"
@ -1411,19 +1389,23 @@ msgstr ""
#: GuiImapFetcher.py:51
msgid "If you change the config you must save before importing"
msgstr ""
"Falls Du die Konfiguration geändert hast musst du vor dem Importieren erst "
"Speichern"
#: GuiImapFetcher.py:89
msgid "Starting import. Please wait."
msgstr ""
msgstr "Import gestartet. Bitte warten."
#: GuiImapFetcher.py:94
msgid "Finished import without error."
msgstr ""
msgstr "Import ohne Fehler abgeschlossen."
#: GuiImapFetcher.py:97
msgid ""
"Login to mailserver failed: please check mailserver, username and password"
msgstr ""
"Login beim Mailserver fehlgeschlagen: Bitte überprüfe Mail Server, "
"Benutzername und Passwort"
#: GuiImapFetcher.py:100
msgid ""
@ -1496,18 +1478,16 @@ msgid "Text"
msgstr ""
#: GuiPositionalStats.py:137
#, fuzzy
msgid "activesite set to %s"
msgstr "self.sites[%s] auf %s gesetzt"
msgstr "activesite auf %s gesetzt"
#: GuiPositionalStats.py:323
msgid "Positional Stats page displayed in %4.2f seconds"
msgstr "Statistiken nach Position wurde in %4.2f Sekunden angezeigt"
#: GuiPrefs.py:31
#, fuzzy
msgid "Databases"
msgstr "_Datenbank"
msgstr "Datenbanken"
#: GuiPrefs.py:31
msgid "General"
@ -1518,19 +1498,8 @@ msgid "HUD"
msgstr ""
#: GuiPrefs.py:32
#, fuzzy
msgid "Import"
msgstr "_Importieren"
#: GuiPrefs.py:33
#, fuzzy
msgid "Games"
msgstr "Spiele:"
#: GuiPrefs.py:33
#, fuzzy
msgid "Sites"
msgstr "Seien:"
msgstr "Importieren"
#: GuiPrefs.py:34
msgid "Popup Windows"
@ -1545,14 +1514,12 @@ msgid "Popup Name"
msgstr ""
#: GuiPrefs.py:35
#, fuzzy
msgid "Stat"
msgstr "Status"
msgstr "Stat"
#: GuiPrefs.py:36 GuiPrefs.py:42
#, fuzzy
msgid "Stat Name"
msgstr "DB Name"
msgstr "Stat-Name"
#: GuiPrefs.py:37
msgid "Auxiliary Windows"
@ -1587,9 +1554,8 @@ msgid "Left/Right Align"
msgstr ""
#: GuiPrefs.py:41
#, fuzzy
msgid "Show in Position Stats"
msgstr "Positionen Anzeigen"
msgstr "In \"Statistiken nach Position\" anzeigen"
#: GuiPrefs.py:41
#, fuzzy
@ -1598,14 +1564,14 @@ msgstr "_Limits anzeigen"
#: GuiPrefs.py:42
msgid "Format"
msgstr ""
msgstr "Format"
#: GuiPrefs.py:72
msgid "Setting"
msgstr ""
msgstr "Einstellung"
#: GuiPrefs.py:78
msgid "Value (double-click to change)"
msgid "Value (double-click to change)"
msgstr ""
#: GuiPrefs.py:178
@ -1873,14 +1839,12 @@ msgid "Flop"
msgstr ""
#: GuiStove.py:134
#, fuzzy
msgid "Gametype:"
msgstr "Spiele:"
msgid "Gametype"
msgstr "Spiel"
#: GuiStove.py:137
#, fuzzy
msgid "Players:"
msgstr "Alle Spieler"
msgid "Players"
msgstr "Spieler"
#: GuiStove.py:143
msgid "Input:"
@ -1895,14 +1859,12 @@ msgid "Board:"
msgstr ""
#: GuiStove.py:182
#, fuzzy
msgid "Player1:"
msgstr "Alle Spieler"
msgstr "Spieler1:"
#: GuiStove.py:197
#, fuzzy
msgid "Player2:"
msgstr "Alle Spieler"
msgstr "Spieler2:"
#: GuiStove.py:211
msgid "Results"
@ -1924,17 +1886,17 @@ msgstr ""
msgid "called update_flop_output_pane"
msgstr ""
#: GuiTourneyGraphViewer.py:178
#: GuiTourneyGraphViewer.py:176
msgid "Tournaments"
msgstr ""
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218
#: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid ""
"Tournaments: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiTourneyGraphViewer.py:215
#: GuiTourneyGraphViewer.py:213
msgid "Tournament Results"
msgstr ""
@ -1980,9 +1942,8 @@ msgid "Cat."
msgstr ""
#: GuiTourneyPlayerStats.py:85
#, fuzzy
msgid "Limit"
msgstr "Limits:"
msgstr "Limit"
#: GuiTourneyPlayerStats.py:86
msgid "Curr."
@ -2033,9 +1994,8 @@ msgid "ROI%"
msgstr ""
#: GuiTourneyPlayerStats.py:99
#, fuzzy
msgid "$/Tour"
msgstr "Tourney"
msgstr "$/Tour"
#: GuiTourneyViewer.py:40
msgid "Enter the tourney number you want to display:"
@ -2082,9 +2042,8 @@ msgid "Any major error will be reported there _only_."
msgstr ""
#: HUD_main.pyw:78
#, fuzzy
msgid "HUD_main: starting ...\n"
msgstr "fpdb startet ..."
msgstr "HUD_main: startet ...\n"
#: HUD_main.pyw:107 HUD_run_me.py:62
msgid "Closing this window will exit from the HUD."
@ -2098,9 +2057,8 @@ msgstr ""
msgid "hud_main: Game changed."
msgstr ""
#: HUD_main.pyw:144
#, fuzzy
msgid "Terminating normally."
#: HUD_main.pyw:144 fpdb.pyw:971
msgid "Quitting normally"
msgstr "Beende normal"
#: HUD_main.pyw:205
@ -2744,9 +2702,8 @@ msgid "No Tournament summaries found."
msgstr ""
#: ImapFetcher.py:111
#, fuzzy
msgid "Errors: %s"
msgstr "***Fehler: "
msgstr "Fehler: %s"
#: ImapFetcher.py:159
msgid "Finished importing %s/%s PS summaries"
@ -2762,9 +2719,8 @@ msgid "limit not found in self.limits(%s). hand: '%s'"
msgstr ""
#: OnGameToFpdb.py:209 OnGameToFpdb.py:210 WinamaxToFpdb.py:217
#, fuzzy
msgid "readHandInfo: DATETIME not matched: '%s'"
msgstr "readHandInfo: '%s' nicht erkannt"
msgstr "readHandInfo: DATETIME in '%s' nicht erkannt"
#: OnGameToFpdb.py:264 PartyPokerToFpdb.py:365 PokerStarsToFpdb.py:312
#: Win2dayToFpdb.py:162 WinamaxToFpdb.py:329
@ -2884,18 +2840,9 @@ msgstr ""
msgid "Cannot read GameType for current hand"
msgstr ""
#: PartyPokerToFpdb.py:348
#: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
#, fuzzy
msgid "Failed to detect currency. HID: %s: '%s'"
msgstr "Konnte Währung nicht finden"
#: PartyPokerToFpdb.py:536
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: PokerStarsToFpdb.py:265
#, fuzzy
msgid "Failed to detect currency: '%s'"
msgid "Failed to detect currency. Hand ID: %s: '%s'"
msgstr "Konnte Währung nicht finden"
#: SplitHandHistory.py:76
@ -3178,10 +3125,14 @@ msgid "tournament tracker starting\n"
msgstr ""
#: TourneyFilters.py:52
msgid "Sites:"
msgstr "Seien:"
#: TourneyFilters.py:54
msgid "Tourney Type"
msgstr ""
#: TourneyFilters.py:86
#: TourneyFilters.py:88
msgid "setting numTourneys:"
msgstr ""
@ -3359,6 +3310,10 @@ msgid ""
"using version %d.%d.%d. Your milage may vary."
msgstr ""
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
#: WinTables.py:81
msgid "Window %s not found. Skipping."
msgstr ""
@ -3367,10 +3322,6 @@ msgstr ""
msgid "self.window doesn't exist? why?"
msgstr ""
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr ""
#: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'"
msgstr ""
@ -3919,7 +3870,9 @@ msgstr "Status: Verbunden mit %s-Datenbank namens %s auf Host: %s"
msgid ""
"\n"
"Global lock taken by %s"
msgstr "Globaler Lock durch %s ergriffen"
msgstr""
"\n"
"Globaler Lock durch %s ergriffen"
#: fpdb.pyw:961
msgid ""
@ -3929,10 +3882,6 @@ msgstr ""
"\n"
"Konnte globalen Lock nicht ergreifen, wird momentan von %s gehalten"
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr "Beende normal"
#: fpdb.pyw:996
msgid "Global lock released.\n"
msgstr "Globaler Lock freigegeben.\n"
@ -4212,6 +4161,37 @@ msgid ""
"manually\n"
msgstr ""
#, fuzzy
#~ msgid "Failed to detect currency: '%s'"
#~ msgstr "Konnte Währung nicht finden"
#, fuzzy
#~ msgid "Terminating normally."
#~ msgstr "Beende normal"
#~ msgid "Games:"
#~ msgstr "Spiele:"
#~ msgid ""
#~ "\n"
#~ "Reading configuration file %s\n"
#~ msgstr ""
#~ "\n"
#~ "Lese Konfigurationsdatei %s\n"
#, fuzzy
#~ msgid "readHandInfo: Raising FpdbParseError"
#~ msgstr "parseSummary: FpdbParseError"
#~ msgid "Didn't match re_HandInfo: '%s'"
#~ msgstr "Keine Treffer für re_HandInfo: '%s'"
#~ msgid "Didn't match re_HandInfo"
#~ msgstr "Keine Treffer für re_HandInfo"
#~ msgid "readHandInfo: Didn't match: '%s'"
#~ msgstr "readHandInfo: '%s' nicht erkannt"
#~ msgid "determineGameType: Unable to recognise gametype from: '%s'"
#~ msgstr "determineGameType: Konnte Gametype in '%s' nicht erkennen"

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2011-03-10 05:14+CET\n"
"POT-Creation-Date: 2011-03-12 21:46+CET\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,16 +36,16 @@ msgstr ""
msgid "determineGameType: Raising FpdbParseError"
msgstr ""
#: AbsoluteToFpdb.py:204
msgid "readHandInfo: Didn't match: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:205
msgid "Absolute: Didn't match re_HandInfo: '%s'"
#: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
#: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
#: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: iPokerToFpdb.py:158
msgid "No match in readHandInfo: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename"
msgid "File name didn't match re_*InfoFromFilename"
msgstr ""
#: AbsoluteToFpdb.py:208
@ -53,7 +53,7 @@ msgid "File name: %s"
msgstr ""
#: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'"
msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
@ -78,24 +78,25 @@ msgstr ""
msgid "Absolute readStudPlayerCards is only a stub."
msgstr ""
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234
#: EverestToFpdb.py:235 EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
#: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:298
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:297
#: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history"
msgstr ""
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:299
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:298
#: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to"
msgstr ""
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:300
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:299
#: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input"
@ -106,17 +107,7 @@ msgid "Could not find file %s"
msgstr ""
#: Anonymise.py:55
msgid "Output being written to"
msgstr ""
#: BetfairToFpdb.py:108 CarbonToFpdb.py:163 EverestToFpdb.py:145
#: EverleafToFpdb.py:145 iPokerToFpdb.py:156 iPokerToFpdb.py:158
msgid "Didn't match re_HandInfo"
msgstr ""
#: BetfairToFpdb.py:109 CarbonToFpdb.py:165 EverestToFpdb.py:147
#: PokerStarsToFpdb.py:223
msgid "No match in readHandInfo."
msgid "Output being written to %s"
msgstr ""
#: BetfairToFpdb.py:123
@ -136,11 +127,6 @@ msgstr ""
msgid "DEBUG: "
msgstr ""
#: BetfairToFpdb.py:199 OnGameToFpdb.py:337 PokerStarsToFpdb.py:439
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
#: Card.py:431
msgid "fpdb card encoding(same as pokersource)"
msgstr ""
@ -229,16 +215,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults."
msgstr ""
#: Configuration.py:714
#: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s"
msgstr ""
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
#: Configuration.py:721
msgid "Error parsing %s. See error log file."
msgstr ""
@ -524,39 +504,39 @@ msgstr ""
msgid "***Error sending finish: "
msgstr ""
#: Database.py:2401
#: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney"
msgstr ""
#: Database.py:2414
#: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr ""
#: Database.py:2540
#: Database.py:2554
msgid "HandToWrite.init error: "
msgstr ""
#: Database.py:2590
#: Database.py:2604
msgid "HandToWrite.set_all error: "
msgstr ""
#: Database.py:2621
#: Database.py:2635
msgid "nutOmatic is id_player = %d"
msgstr ""
#: Database.py:2629
#: Database.py:2643
msgid "query plan: "
msgstr ""
#: Database.py:2638
#: Database.py:2652
msgid "cards ="
msgstr ""
#: Database.py:2641
#: Database.py:2655
msgid "get_stats took: %4.3f seconds"
msgstr ""
#: Database.py:2643
#: Database.py:2657
msgid "press enter to continue"
msgstr ""
@ -568,6 +548,10 @@ msgstr ""
msgid "Everleaf readStudPlayerCards is only a stub."
msgstr ""
#: EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
msgstr ""
#: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s"
msgstr ""
@ -588,31 +572,31 @@ msgstr ""
msgid "Show Number of _Players"
msgstr ""
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "And:"
msgstr ""
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "Between:"
msgstr ""
#: Filters.py:55
msgid "Games:"
#: Filters.py:55 GuiPrefs.py:33
msgid "Games"
msgstr ""
#: Filters.py:55 TourneyFilters.py:50
#: Filters.py:55 GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:"
msgstr ""
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr ""
#: Filters.py:56
msgid "Limits:"
msgstr ""
#: Filters.py:56 TourneyFilters.py:50
#: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:"
msgstr ""
@ -624,7 +608,7 @@ msgstr ""
msgid "Show Position Stats"
msgstr ""
#: Filters.py:58 TourneyFilters.py:51
#: Filters.py:58 TourneyFilters.py:53
msgid "Date:"
msgstr ""
@ -644,7 +628,7 @@ msgstr ""
msgid "New packing box created!"
msgstr ""
#: Filters.py:106 TourneyFilters.py:114
#: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr ""
@ -780,7 +764,7 @@ msgid "Lim_Blinds has no lookup for '%s'"
msgstr ""
#: FulltiltToFpdb.py:267
msgid "readHandInfo: Raising FpdbParseError"
msgid "Raising FpdbParseError"
msgstr ""
#: FulltiltToFpdb.py:369
@ -1180,7 +1164,7 @@ msgid "Host Computer"
msgstr ""
#: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s"
msgid "addDB.run: response is %s, accept is %s"
msgstr ""
#: GuiDatabase.py:495
@ -1256,100 +1240,96 @@ msgid "Log Viewer"
msgstr ""
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n"
" install numpy and matplotlib if you want to use graphs."
msgid "Failed to load libs for graphing, graphing will not function. Please install numpy and matplotlib if you want to use graphs."
msgstr ""
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51
msgid ""
"This is of no consequence for other parts of the program, e.g. import \n"
" and HUD are NOT affected by this problem."
#: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
msgid "This is of no consequence for other parts of the program, e.g. import and HUD are NOT affected by this problem."
msgstr ""
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
#: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph"
msgstr ""
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File"
msgstr ""
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232
#: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: "
msgstr ""
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159
#: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars"
msgstr ""
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164
#: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271
msgid "No player ids found"
msgstr ""
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218
msgid "No limits found"
msgstr ""
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174
#: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s"
msgstr ""
#: GuiGraphViewer.py:193
#: GuiGraphViewer.py:191
msgid "Hands"
msgstr ""
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182
#: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found"
msgstr ""
#: GuiGraphViewer.py:221
#: GuiGraphViewer.py:219
msgid ""
"Hands: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiGraphViewer.py:222
#: GuiGraphViewer.py:220
msgid "Showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:223
#: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:231
#: GuiGraphViewer.py:229
msgid "Profit graph for ring games"
msgstr ""
#: GuiGraphViewer.py:234
#: GuiGraphViewer.py:232
msgid ""
"Hands: %d\n"
"Profit (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:236
#: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:238
#: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276
#: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:"
msgstr ""
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289
#: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported"
msgstr ""
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307
#: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created"
msgstr ""
@ -1473,14 +1453,6 @@ msgstr ""
msgid "Import"
msgstr ""
#: GuiPrefs.py:33
msgid "Games"
msgstr ""
#: GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: GuiPrefs.py:34
msgid "Popup Windows"
msgstr ""
@ -1550,7 +1522,7 @@ msgid "Setting"
msgstr ""
#: GuiPrefs.py:78
msgid "Value (double-click to change)"
msgid "Value (double-click to change)"
msgstr ""
#: GuiPrefs.py:178
@ -1815,11 +1787,11 @@ msgid "Flop"
msgstr ""
#: GuiStove.py:134
msgid "Gametype:"
msgid "Gametype"
msgstr ""
#: GuiStove.py:137
msgid "Players:"
msgid "Players"
msgstr ""
#: GuiStove.py:143
@ -1862,17 +1834,17 @@ msgstr ""
msgid "called update_flop_output_pane"
msgstr ""
#: GuiTourneyGraphViewer.py:178
#: GuiTourneyGraphViewer.py:176
msgid "Tournaments"
msgstr ""
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218
#: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid ""
"Tournaments: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiTourneyGraphViewer.py:215
#: GuiTourneyGraphViewer.py:213
msgid "Tournament Results"
msgstr ""
@ -2029,8 +2001,8 @@ msgstr ""
msgid "hud_main: Game changed."
msgstr ""
#: HUD_main.pyw:144
msgid "Terminating normally."
#: HUD_main.pyw:144 fpdb.pyw:971
msgid "Quitting normally"
msgstr ""
#: HUD_main.pyw:205
@ -2808,16 +2780,8 @@ msgstr ""
msgid "Cannot read GameType for current hand"
msgstr ""
#: PartyPokerToFpdb.py:348
msgid "Failed to detect currency. HID: %s: '%s'"
msgstr ""
#: PartyPokerToFpdb.py:536
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: PokerStarsToFpdb.py:265
msgid "Failed to detect currency: '%s'"
#: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
msgid "Failed to detect currency. Hand ID: %s: '%s'"
msgstr ""
#: SplitHandHistory.py:76
@ -3101,10 +3065,14 @@ msgid ""
msgstr ""
#: TourneyFilters.py:52
msgid "Sites:"
msgstr ""
#: TourneyFilters.py:54
msgid "Tourney Type"
msgstr ""
#: TourneyFilters.py:86
#: TourneyFilters.py:88
msgid "setting numTourneys:"
msgstr ""
@ -3280,6 +3248,10 @@ msgstr ""
msgid "This module was developed and tested with version 2.8.18 of gtk. You are using version %d.%d.%d. Your milage may vary."
msgstr ""
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
#: WinTables.py:81
msgid "Window %s not found. Skipping."
msgstr ""
@ -3288,10 +3260,6 @@ msgstr ""
msgid "self.window doesn't exist? why?"
msgstr ""
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr ""
#: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'"
msgstr ""
@ -3783,10 +3751,6 @@ msgid ""
"Failed to get global lock, it is currently held by %s"
msgstr ""
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr ""
#: fpdb.pyw:996
msgid ""
"Global lock released.\n"

View File

@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: fpdb\n"
"POT-Creation-Date: 2011-03-10 05:10+CET\n"
"POT-Creation-Date: 2011-03-12 21:23+CET\n"
"PO-Revision-Date: \n"
"Last-Translator: Javier Sánchez <donoban@gmail.com>\n"
"Language-Team: \n"
@ -33,16 +33,16 @@ msgstr "Incapaz de reconocer el tipo de juego para: '%s'"
msgid "determineGameType: Raising FpdbParseError"
msgstr "determineGameType: Lanzando FpdbParseError"
#: AbsoluteToFpdb.py:204
msgid "readHandInfo: Didn't match: '%s'"
msgstr "readHandInfo: No coinciden: '%s'"
#: AbsoluteToFpdb.py:205
msgid "Absolute: Didn't match re_HandInfo: '%s'"
#: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
#: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
#: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: iPokerToFpdb.py:158
msgid "No match in readHandInfo: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename"
msgid "File name didn't match re_*InfoFromFilename"
msgstr ""
#: AbsoluteToFpdb.py:208
@ -50,7 +50,7 @@ msgid "File name: %s"
msgstr "Nombre de archivo: %s"
#: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'"
msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
@ -75,24 +75,25 @@ msgstr ""
msgid "Absolute readStudPlayerCards is only a stub."
msgstr ""
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234
#: EverestToFpdb.py:235 EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
#: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:298
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:297
#: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history"
msgstr ""
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:299
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:298
#: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to"
msgstr ""
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:300
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:299
#: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input"
@ -103,17 +104,7 @@ msgid "Could not find file %s"
msgstr ""
#: Anonymise.py:55
msgid "Output being written to"
msgstr ""
#: BetfairToFpdb.py:108 CarbonToFpdb.py:163 EverestToFpdb.py:145
#: EverleafToFpdb.py:145 iPokerToFpdb.py:156 iPokerToFpdb.py:158
msgid "Didn't match re_HandInfo"
msgstr ""
#: BetfairToFpdb.py:109 CarbonToFpdb.py:165 EverestToFpdb.py:147
#: PokerStarsToFpdb.py:223
msgid "No match in readHandInfo."
msgid "Output being written to %s"
msgstr ""
#: BetfairToFpdb.py:123
@ -133,11 +124,6 @@ msgstr ""
msgid "DEBUG: "
msgstr ""
#: BetfairToFpdb.py:199 OnGameToFpdb.py:337 PokerStarsToFpdb.py:439
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
#: Card.py:431
msgid "fpdb card encoding(same as pokersource)"
msgstr ""
@ -224,16 +210,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults."
msgstr ""
#: Configuration.py:714
#: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s"
msgstr ""
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
#: Configuration.py:721
msgid "Error parsing %s. See error log file."
msgstr ""
@ -526,39 +506,39 @@ msgstr ""
msgid "***Error sending finish: "
msgstr ""
#: Database.py:2401
#: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney"
msgstr ""
#: Database.py:2414
#: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr ""
#: Database.py:2540
#: Database.py:2554
msgid "HandToWrite.init error: "
msgstr ""
#: Database.py:2590
#: Database.py:2604
msgid "HandToWrite.set_all error: "
msgstr ""
#: Database.py:2621
#: Database.py:2635
msgid "nutOmatic is id_player = %d"
msgstr ""
#: Database.py:2629
#: Database.py:2643
msgid "query plan: "
msgstr ""
#: Database.py:2638
#: Database.py:2652
msgid "cards ="
msgstr ""
#: Database.py:2641
#: Database.py:2655
msgid "get_stats took: %4.3f seconds"
msgstr ""
#: Database.py:2643
#: Database.py:2657
msgid "press enter to continue"
msgstr ""
@ -570,6 +550,10 @@ msgstr ""
msgid "Everleaf readStudPlayerCards is only a stub."
msgstr ""
#: EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
msgstr ""
#: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s"
msgstr ""
@ -590,31 +574,33 @@ msgstr "Mostrar _límites"
msgid "Show Number of _Players"
msgstr "Mostrar número de _jugadores"
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "And:"
msgstr "Y:"
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "Between:"
msgstr "Entre:"
#: Filters.py:55
msgid "Games:"
#: Filters.py:55 GuiPrefs.py:33
#, fuzzy
msgid "Games"
msgstr "Juegos:"
#: Filters.py:55 TourneyFilters.py:50
#: Filters.py:55 GuiPrefs.py:33
#, fuzzy
msgid "Sites"
msgstr "Sitios:"
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:"
msgstr "Hero:"
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr "Sitios:"
#: Filters.py:56
msgid "Limits:"
msgstr "Límites:"
#: Filters.py:56 TourneyFilters.py:50
#: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:"
msgstr "Número de jugadores:"
@ -626,7 +612,7 @@ msgstr ""
msgid "Show Position Stats"
msgstr "Mostrar stadísticas posicionales"
#: Filters.py:58 TourneyFilters.py:51
#: Filters.py:58 TourneyFilters.py:53
msgid "Date:"
msgstr "Fecha:"
@ -646,7 +632,7 @@ msgstr "Torneo"
msgid "New packing box created!"
msgstr ""
#: Filters.py:106 TourneyFilters.py:114
#: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr ""
@ -785,7 +771,7 @@ msgstr ""
#: FulltiltToFpdb.py:267
#, fuzzy
msgid "readHandInfo: Raising FpdbParseError"
msgid "Raising FpdbParseError"
msgstr "determineGameType: Lanzando FpdbParseError"
#: FulltiltToFpdb.py:369
@ -1200,7 +1186,7 @@ msgid "Host Computer"
msgstr ""
#: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s"
msgid "addDB.run: response is %s, accept is %s"
msgstr ""
#: GuiDatabase.py:495
@ -1277,59 +1263,59 @@ msgstr ""
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n"
" install numpy and matplotlib if you want to use graphs."
"Failed to load libs for graphing, graphing will not function. Please install "
"numpy and matplotlib if you want to use graphs."
msgstr ""
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51
#: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
msgid ""
"This is of no consequence for other parts of the program, e.g. import \n"
" and HUD are NOT affected by this problem."
"This is of no consequence for other parts of the program, e.g. import and "
"HUD are NOT affected by this problem."
msgstr ""
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
#: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph"
msgstr ""
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File"
msgstr ""
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232
#: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: "
msgstr ""
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159
#: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars"
msgstr ""
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164
#: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271
msgid "No player ids found"
msgstr ""
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218
msgid "No limits found"
msgstr ""
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174
#: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s"
msgstr ""
#: GuiGraphViewer.py:193
#: GuiGraphViewer.py:191
msgid "Hands"
msgstr "Manos"
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182
#: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found"
msgstr ""
#: GuiGraphViewer.py:221
#: GuiGraphViewer.py:219
msgid ""
"Hands: %d\n"
"Profit: $%.2f"
@ -1337,19 +1323,19 @@ msgstr ""
"Manos: %d\n"
"Beneficio: $%.2f"
#: GuiGraphViewer.py:222
#: GuiGraphViewer.py:220
msgid "Showdown: $%.2f"
msgstr "Showdown: $%.2f"
#: GuiGraphViewer.py:223
#: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f"
msgstr "Non-showdown: $%.2f"
#: GuiGraphViewer.py:231
#: GuiGraphViewer.py:229
msgid "Profit graph for ring games"
msgstr ""
#: GuiGraphViewer.py:234
#: GuiGraphViewer.py:232
msgid ""
"Hands: %d\n"
"Profit (%s): %.2f"
@ -1357,23 +1343,23 @@ msgstr ""
"Manos: %d\n"
"Beneficio (%s): %.2f"
#: GuiGraphViewer.py:236
#: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:238
#: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276
#: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:"
msgstr "Por favor elija el directorio a donde desea exportar:"
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289
#: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported"
msgstr "Cerrado, gráfica no exportada"
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307
#: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created"
msgstr "Gráfica creada"
@ -1502,16 +1488,6 @@ msgstr ""
msgid "Import"
msgstr "_Importar"
#: GuiPrefs.py:33
#, fuzzy
msgid "Games"
msgstr "Juegos:"
#: GuiPrefs.py:33
#, fuzzy
msgid "Sites"
msgstr "Sitios:"
#: GuiPrefs.py:34
msgid "Popup Windows"
msgstr ""
@ -1585,7 +1561,7 @@ msgid "Setting"
msgstr ""
#: GuiPrefs.py:78
msgid "Value (double-click to change)"
msgid "Value (double-click to change)"
msgstr ""
#: GuiPrefs.py:178
@ -1858,12 +1834,12 @@ msgstr ""
#: GuiStove.py:134
#, fuzzy
msgid "Gametype:"
msgid "Gametype"
msgstr "Juegos:"
#: GuiStove.py:137
#, fuzzy
msgid "Players:"
msgid "Players"
msgstr "Todos los jugadores"
#: GuiStove.py:143
@ -1908,11 +1884,11 @@ msgstr ""
msgid "called update_flop_output_pane"
msgstr ""
#: GuiTourneyGraphViewer.py:178
#: GuiTourneyGraphViewer.py:176
msgid "Tournaments"
msgstr "Torneos"
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218
#: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid ""
"Tournaments: %d\n"
"Profit: $%.2f"
@ -1920,7 +1896,7 @@ msgstr ""
"Torneos: %d\n"
"Beneficio: $%.2f"
#: GuiTourneyGraphViewer.py:215
#: GuiTourneyGraphViewer.py:213
msgid "Tournament Results"
msgstr "Resultados de torneos"
@ -2085,9 +2061,8 @@ msgstr ""
msgid "hud_main: Game changed."
msgstr ""
#: HUD_main.pyw:144
#, fuzzy
msgid "Terminating normally."
#: HUD_main.pyw:144 fpdb.pyw:971
msgid "Quitting normally"
msgstr "Saliendo de forma normal"
#: HUD_main.pyw:205
@ -2873,16 +2848,8 @@ msgstr ""
msgid "Cannot read GameType for current hand"
msgstr ""
#: PartyPokerToFpdb.py:348
msgid "Failed to detect currency. HID: %s: '%s'"
msgstr ""
#: PartyPokerToFpdb.py:536
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: PokerStarsToFpdb.py:265
msgid "Failed to detect currency: '%s'"
#: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
msgid "Failed to detect currency. Hand ID: %s: '%s'"
msgstr ""
#: SplitHandHistory.py:76
@ -3165,10 +3132,14 @@ msgid "tournament tracker starting\n"
msgstr ""
#: TourneyFilters.py:52
msgid "Sites:"
msgstr "Sitios:"
#: TourneyFilters.py:54
msgid "Tourney Type"
msgstr ""
#: TourneyFilters.py:86
#: TourneyFilters.py:88
msgid "setting numTourneys:"
msgstr ""
@ -3346,6 +3317,10 @@ msgid ""
"using version %d.%d.%d. Your milage may vary."
msgstr ""
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
#: WinTables.py:81
msgid "Window %s not found. Skipping."
msgstr ""
@ -3354,10 +3329,6 @@ msgstr ""
msgid "self.window doesn't exist? why?"
msgstr ""
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr ""
#: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'"
msgstr ""
@ -3891,10 +3862,6 @@ msgstr ""
"\n"
"Fallo al acceder al reloj global, está siendo utilizado por %s"
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr "Saliendo de forma normal"
#: fpdb.pyw:996
msgid "Global lock released.\n"
msgstr ""
@ -4165,6 +4132,16 @@ msgid ""
"manually\n"
msgstr ""
#, fuzzy
#~ msgid "Terminating normally."
#~ msgstr "Saliendo de forma normal"
#~ msgid "Games:"
#~ msgstr "Juegos:"
#~ msgid "readHandInfo: Didn't match: '%s'"
#~ msgstr "readHandInfo: No coinciden: '%s'"
#~ msgid "determineGameType: Unable to recognise gametype from: '%s'"
#~ msgstr "determineGameType: Incapaz de reconocer el tipo de juego para: '%s'"

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Free Poker Database\n"
"POT-Creation-Date: 2011-03-10 05:10+CET\n"
"POT-Creation-Date: 2011-03-12 21:23+CET\n"
"PO-Revision-Date: 2011-03-09 15:37+0000\n"
"Last-Translator: kibbitzer <thomas.joannes@gmail.com>\n"
"Language-Team: French (France) <>\n"
@ -37,16 +37,18 @@ msgstr "Impossible de reconnaître le type de jeu de: '%s'"
msgid "determineGameType: Raising FpdbParseError"
msgstr "determineGameType: Une erreur d'analyse de Fpdb est survenue"
#: AbsoluteToFpdb.py:204
msgid "readHandInfo: Didn't match: '%s'"
msgstr "ReadHandInfo: Pas de correspondance: '%s'"
#: AbsoluteToFpdb.py:205
msgid "Absolute: Didn't match re_HandInfo: '%s'"
msgstr "Absolute: Pas de correspondance avec re_HandInfo: '%s'"
#: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
#: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
#: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: iPokerToFpdb.py:158
#, fuzzy
msgid "No match in readHandInfo: '%s'"
msgstr "Pas de correspondance dans readHandInfo"
#: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename"
#, fuzzy
msgid "File name didn't match re_*InfoFromFilename"
msgstr ""
"readHandInfo: Le nom de fichier ne correspond pas à re_*IntoFromFileName"
@ -55,7 +57,8 @@ msgid "File name: %s"
msgstr "Nom de fichier: '%s'"
#: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'"
#, fuzzy
msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr "Absolute: Ne correspond pas à re_*IntoFromFileName: '%s'"
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
@ -80,25 +83,25 @@ msgstr "Pas de petite blinde"
msgid "Absolute readStudPlayerCards is only a stub."
msgstr "Absolute readStudPlayerCards est un bout de programme temporaire."
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234
#: EverestToFpdb.py:235 EverleafToFpdb.py:288
#, fuzzy
msgid "Unimplemented readAction: %s %s"
#: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: '%s' '%s'"
msgstr "readAction non implémenté: '%s' '%s'"
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:298
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:297
#: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history"
msgstr "analyse de l'historique des mains"
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:299
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:298
#: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to"
msgstr "traduction envoyée vers"
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:300
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:299
#: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input"
@ -109,19 +112,10 @@ msgid "Could not find file %s"
msgstr "Impossible de trouver le fichier %s"
#: Anonymise.py:55
msgid "Output being written to"
#, fuzzy
msgid "Output being written to %s"
msgstr "Enregistrement du résultat dans"
#: BetfairToFpdb.py:108 CarbonToFpdb.py:163 EverestToFpdb.py:145
#: EverleafToFpdb.py:145 iPokerToFpdb.py:156 iPokerToFpdb.py:158
msgid "Didn't match re_HandInfo"
msgstr "Ne correspond pas à  re_HandInfo"
#: BetfairToFpdb.py:109 CarbonToFpdb.py:165 EverestToFpdb.py:147
#: PokerStarsToFpdb.py:223
msgid "No match in readHandInfo."
msgstr "Pas de correspondance dans readHandInfo"
#: BetfairToFpdb.py:123
msgid "readPlayerStacks: Less than 2 players found in a hand"
msgstr "readPlayerStacks: Moins de 2 joueurs trouvés dans une main"
@ -139,12 +133,6 @@ msgstr "Bring-In non trouvé"
msgid "DEBUG: "
msgstr ""
#: BetfairToFpdb.py:199 OnGameToFpdb.py:337 PokerStarsToFpdb.py:439
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
#, fuzzy
msgid "unimplemented readAction: '%s' '%s'"
msgstr "readAction non implémenté: '%s' '%s'"
#: Card.py:431
msgid "fpdb card encoding(same as pokersource)"
msgstr "encodage des cartes fpdb (même que pokersource)"
@ -247,18 +235,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults."
msgstr "Fichier de configuration %s non trouvé. Defaut utilisé."
#: Configuration.py:714
#: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s"
msgstr "Lecture du fichier de configuration %s"
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
"\n"
"Lecture du fichier de configuration %s\n"
#: Configuration.py:721
msgid "Error parsing %s. See error log file."
msgstr "Erreur d'analyse %s. Voir fichier de log d'erreur"
@ -558,39 +538,39 @@ msgstr ""
msgid "***Error sending finish: "
msgstr "***Erreur lors de l'envoi de fin: "
#: Database.py:2401
#: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney"
msgstr "source invalide dans Database.createOrUpdateTourney"
#: Database.py:2414
#: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr "source invalide dans Database.createOrUpdateTourneysPlayers"
#: Database.py:2540
#: Database.py:2554
msgid "HandToWrite.init error: "
msgstr "HandToWrite.init erreur: "
#: Database.py:2590
#: Database.py:2604
msgid "HandToWrite.set_all error: "
msgstr "HandToWrite.set_all erreur: "
#: Database.py:2621
#: Database.py:2635
msgid "nutOmatic is id_player = %d"
msgstr "nutOmatic est id_player = %d"
#: Database.py:2629
#: Database.py:2643
msgid "query plan: "
msgstr "plan de requête: "
#: Database.py:2638
#: Database.py:2652
msgid "cards ="
msgstr "cartes ="
#: Database.py:2641
#: Database.py:2655
msgid "get_stats took: %4.3f seconds"
msgstr "get_stats a duré: %4.3f seconds"
#: Database.py:2643
#: Database.py:2657
msgid "press enter to continue"
msgstr "appuyez sur entrée pour continuer"
@ -603,6 +583,11 @@ msgid "Everleaf readStudPlayerCards is only a stub."
msgstr ""
"Everleaf readStudPlayerCards est seulement un bout de programme temporaire."
#: EverleafToFpdb.py:288
#, fuzzy
msgid "Unimplemented readAction: %s %s"
msgstr "readAction non implémenté: '%s' '%s'"
#: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s"
msgstr ""
@ -623,31 +608,33 @@ msgstr "Montre _Limites"
msgid "Show Number of _Players"
msgstr "Montre le nombre de _Joueurs"
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "And:"
msgstr "Et:"
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "Between:"
msgstr "Entre:"
#: Filters.py:55
msgid "Games:"
#: Filters.py:55 GuiPrefs.py:33
#, fuzzy
msgid "Games"
msgstr "Parties:"
#: Filters.py:55 TourneyFilters.py:50
#: Filters.py:55 GuiPrefs.py:33
#, fuzzy
msgid "Sites"
msgstr "Sites:"
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:"
msgstr "Héros:"
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr "Sites:"
#: Filters.py:56
msgid "Limits:"
msgstr "Limites"
#: Filters.py:56 TourneyFilters.py:50
#: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:"
msgstr "Nombre de Joueurs :"
@ -659,7 +646,7 @@ msgstr "Regroupement:"
msgid "Show Position Stats"
msgstr "Montre les stats par position"
#: Filters.py:58 TourneyFilters.py:51
#: Filters.py:58 TourneyFilters.py:53
msgid "Date:"
msgstr "Date:"
@ -680,7 +667,7 @@ msgstr "Tournoi"
msgid "New packing box created!"
msgstr "DEBUG: Nouvelle boîte de stockage créée !"
#: Filters.py:106 TourneyFilters.py:114
#: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr "0 ou plus d'un site correspondant (%s) - EEK"
@ -818,7 +805,7 @@ msgstr "Lim_Blinds ne retourne rien pour '%s'"
#: FulltiltToFpdb.py:267
#, fuzzy
msgid "readHandInfo: Raising FpdbParseError"
msgid "Raising FpdbParseError"
msgstr "parseSummary: Une erreur d'analyse de Fpdb est survenue"
#: FulltiltToFpdb.py:369
@ -1268,7 +1255,7 @@ msgid "Host Computer"
msgstr "Ordinateur hôte"
#: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s"
msgid "addDB.run: response is %s, accept is %s"
msgstr ""
#: GuiDatabase.py:495
@ -1345,65 +1332,67 @@ msgid "Log Viewer"
msgstr "Visualiseur de Log"
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
#, fuzzy
msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n"
" install numpy and matplotlib if you want to use graphs."
"Failed to load libs for graphing, graphing will not function. Please install "
"numpy and matplotlib if you want to use graphs."
msgstr ""
"Le chargement des libs de graph a échoué, graph indisponible. Veuillez\n"
" installer numpy et matplotlib si vous voulez utiliser les "
"graphiques."
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51
#: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
#, fuzzy
msgid ""
"This is of no consequence for other parts of the program, e.g. import \n"
" and HUD are NOT affected by this problem."
"This is of no consequence for other parts of the program, e.g. import and "
"HUD are NOT affected by this problem."
msgstr ""
"Celà n'a aucune incidence sur le reste du programme, par ex. importation \n"
" et les HUD ne sont PAS affecté par ce problème."
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
#: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph"
msgstr "Rafraîchir _Graphique"
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File"
msgstr "_Exporter vers un fichier"
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232
#: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: "
msgstr "***Erreur: "
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159
#: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars"
msgstr "Pas de site sélectionné - Pokerstars par défaut"
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164
#: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271
msgid "No player ids found"
msgstr "Pas d'Ids de joueur trouvés"
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218
msgid "No limits found"
msgstr "Pas de limites trouvées"
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174
#: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s"
msgstr "Graphique généré en: %s"
#: GuiGraphViewer.py:193
#: GuiGraphViewer.py:191
msgid "Hands"
msgstr "Mains"
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182
#: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found"
msgstr "Pas de Données Trouvées pour le(s) Joueur(s)"
#: GuiGraphViewer.py:221
#: GuiGraphViewer.py:219
msgid ""
"Hands: %d\n"
"Profit: $%.2f"
@ -1411,19 +1400,19 @@ msgstr ""
"Mains: %d\n"
"Profit: $%.2f"
#: GuiGraphViewer.py:222
#: GuiGraphViewer.py:220
msgid "Showdown: $%.2f"
msgstr "Abattage: $%.2f"
#: GuiGraphViewer.py:223
#: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f"
msgstr "Sans abattage: $%.2f"
#: GuiGraphViewer.py:231
#: GuiGraphViewer.py:229
msgid "Profit graph for ring games"
msgstr ""
#: GuiGraphViewer.py:234
#: GuiGraphViewer.py:232
msgid ""
"Hands: %d\n"
"Profit (%s): %.2f"
@ -1431,23 +1420,23 @@ msgstr ""
"Mains: %d\n"
"Profit (%s): %.2f"
#: GuiGraphViewer.py:236
#: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f"
msgstr "Abattage (%s): %.2f"
#: GuiGraphViewer.py:238
#: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f"
msgstr "Sans abattage (%s): %.2f"
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276
#: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:"
msgstr "Veuillez choisir le répertoire vers lequel vous souhaitez exporter :"
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289
#: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported"
msgstr "Fermé, pas de graphique exporté"
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307
#: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created"
msgstr "Graphique créé"
@ -1582,16 +1571,6 @@ msgstr ""
msgid "Import"
msgstr "_Importation"
#: GuiPrefs.py:33
#, fuzzy
msgid "Games"
msgstr "Parties:"
#: GuiPrefs.py:33
#, fuzzy
msgid "Sites"
msgstr "Sites:"
#: GuiPrefs.py:34
#, fuzzy
msgid "Popup Windows"
@ -1669,7 +1648,8 @@ msgid "Setting"
msgstr "Paramétrage"
#: GuiPrefs.py:78
msgid "Value (double-click to change)"
#, fuzzy
msgid "Value (double-click to change)"
msgstr "Valeur (double-cliquer pour changer)"
#: GuiPrefs.py:178
@ -1973,12 +1953,12 @@ msgstr ""
#: GuiStove.py:134
#, fuzzy
msgid "Gametype:"
msgid "Gametype"
msgstr "Parties:"
#: GuiStove.py:137
#, fuzzy
msgid "Players:"
msgid "Players"
msgstr "Tous les joueurs"
#: GuiStove.py:143
@ -2026,11 +2006,11 @@ msgstr ""
msgid "called update_flop_output_pane"
msgstr ""
#: GuiTourneyGraphViewer.py:178
#: GuiTourneyGraphViewer.py:176
msgid "Tournaments"
msgstr "Tournois"
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218
#: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid ""
"Tournaments: %d\n"
"Profit: $%.2f"
@ -2038,7 +2018,7 @@ msgstr ""
"Tournois: %d\n"
"Profit: $%.2f"
#: GuiTourneyGraphViewer.py:215
#: GuiTourneyGraphViewer.py:213
msgid "Tournament Results"
msgstr "Résultats de tournois"
@ -2222,9 +2202,8 @@ msgstr ""
msgid "hud_main: Game changed."
msgstr ""
#: HUD_main.pyw:144
#, fuzzy
msgid "Terminating normally."
#: HUD_main.pyw:144 fpdb.pyw:971
msgid "Quitting normally"
msgstr "Quitte normalement"
#: HUD_main.pyw:205
@ -3048,18 +3027,9 @@ msgstr "Impossible de lire Handinfo pour cette main"
msgid "Cannot read GameType for current hand"
msgstr "Impossible de lire le GameType pour cette main"
#: PartyPokerToFpdb.py:348
#: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
#, fuzzy
msgid "Failed to detect currency. HID: %s: '%s'"
msgstr "Impossible de trouver la devise"
#: PartyPokerToFpdb.py:536
msgid "Unimplemented readAction: '%s' '%s'"
msgstr "readAction non implémenté: '%s' '%s'"
#: PokerStarsToFpdb.py:265
#, fuzzy
msgid "Failed to detect currency: '%s'"
msgid "Failed to detect currency. Hand ID: %s: '%s'"
msgstr "Impossible de trouver la devise"
#: SplitHandHistory.py:76
@ -3348,10 +3318,14 @@ msgid "tournament tracker starting\n"
msgstr "démarrage du tracker de tournoi\n"
#: TourneyFilters.py:52
msgid "Sites:"
msgstr "Sites:"
#: TourneyFilters.py:54
msgid "Tourney Type"
msgstr "Type de Tournoi"
#: TourneyFilters.py:86
#: TourneyFilters.py:88
msgid "setting numTourneys:"
msgstr "Paramètre numTourneys:"
@ -3531,6 +3505,11 @@ msgstr ""
"Ce module à été développé et testé avec la version 2.8.18 de gtk. Vous "
"utilisez la version %d.%d.%d. Votre programme de fidélité peut varier."
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
#, fuzzy
msgid "unimplemented readAction: '%s' '%s'"
msgstr "readAction non implémenté: '%s' '%s'"
#: WinTables.py:81
#, fuzzy
msgid "Window %s not found. Skipping."
@ -3540,10 +3519,6 @@ msgstr "nom de table %s non trouvé, ignore.\n"
msgid "self.window doesn't exist? why?"
msgstr "self.window n'existe pas ? Pourquoi ?"
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr "Impossible de trouver la devise"
#: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'"
msgstr ""
@ -4124,10 +4099,6 @@ msgstr ""
"\n"
"Impossible d'obtenir un verrou global, il actuellement détenu par %s"
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr "Quitte normalement"
#: fpdb.pyw:996
msgid "Global lock released.\n"
msgstr "Verrou global libéré.\n"
@ -4436,6 +4407,60 @@ msgstr ""
"pas de répertoire gtk trouvé à cet endroit - installez gtk ou modifiez le "
"chemin manuellement\n"
#~ msgid ""
#~ "Failed to load libs for graphing, graphing will not function. Please\n"
#~ " install numpy and matplotlib if you want to use graphs."
#~ msgstr ""
#~ "Le chargement des libs de graph a échoué, graph indisponible. Veuillez\n"
#~ " installer numpy et matplotlib si vous voulez utiliser "
#~ "les graphiques."
#~ msgid ""
#~ "This is of no consequence for other parts of the program, e.g. import \n"
#~ " and HUD are NOT affected by this problem."
#~ msgstr ""
#~ "Celà n'a aucune incidence sur le reste du programme, par ex. "
#~ "importation \n"
#~ " et les HUD ne sont PAS affecté par ce problème."
#, fuzzy
#~ msgid "Failed to detect currency: '%s'"
#~ msgstr "Impossible de trouver la devise"
#~ msgid "failed to detect currency"
#~ msgstr "Impossible de trouver la devise"
#, fuzzy
#~ msgid "Terminating normally."
#~ msgstr "Quitte normalement"
#~ msgid "Games:"
#~ msgstr "Parties:"
#~ msgid ""
#~ "\n"
#~ "Reading configuration file %s\n"
#~ msgstr ""
#~ "\n"
#~ "Lecture du fichier de configuration %s\n"
#, fuzzy
#~ msgid "readHandInfo: Raising FpdbParseError"
#~ msgstr "parseSummary: Une erreur d'analyse de Fpdb est survenue"
#, fuzzy
#~ msgid "Didn't match re_HandInfo: '%s'"
#~ msgstr "Ne correspond pas à  re_HandInfo"
#~ msgid "Didn't match re_HandInfo"
#~ msgstr "Ne correspond pas à  re_HandInfo"
#~ msgid "readHandInfo: Didn't match: '%s'"
#~ msgstr "ReadHandInfo: Pas de correspondance: '%s'"
#~ msgid "Absolute: Didn't match re_HandInfo: '%s'"
#~ msgstr "Absolute: Pas de correspondance avec re_HandInfo: '%s'"
#~ msgid "determineGameType: Unable to recognise gametype from: '%s'"
#~ msgstr ""
#~ "determineGameType: Impossible de reconnaître le type de jeu de: '%s'"

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Free Poker Database\n"
"POT-Creation-Date: 2011-03-10 05:10+CET\n"
"POT-Creation-Date: 2011-03-12 21:23+CET\n"
"PO-Revision-Date: 2011-03-09 22:36+0000\n"
"Last-Translator: greg20 <greg20@isonews2.com>\n"
"Language-Team: Polish (Poland) <>\n"
@ -38,16 +38,17 @@ msgstr ""
msgid "determineGameType: Raising FpdbParseError"
msgstr ""
#: AbsoluteToFpdb.py:204
msgid "readHandInfo: Didn't match: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:205
msgid "Absolute: Didn't match re_HandInfo: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
#: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
#: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: iPokerToFpdb.py:158
#, fuzzy
msgid "No match in readHandInfo: '%s'"
msgstr "Brak dopasowań in XTables dla tabeli '%s'."
#: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename"
msgid "File name didn't match re_*InfoFromFilename"
msgstr ""
#: AbsoluteToFpdb.py:208
@ -55,7 +56,7 @@ msgid "File name: %s"
msgstr ""
#: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'"
msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr ""
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
@ -80,24 +81,25 @@ msgstr ""
msgid "Absolute readStudPlayerCards is only a stub."
msgstr ""
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234
#: EverestToFpdb.py:235 EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
#: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:298
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:297
#: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history"
msgstr ""
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:299
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:298
#: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to"
msgstr ""
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:300
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:299
#: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input"
@ -108,17 +110,7 @@ msgid "Could not find file %s"
msgstr ""
#: Anonymise.py:55
msgid "Output being written to"
msgstr ""
#: BetfairToFpdb.py:108 CarbonToFpdb.py:163 EverestToFpdb.py:145
#: EverleafToFpdb.py:145 iPokerToFpdb.py:156 iPokerToFpdb.py:158
msgid "Didn't match re_HandInfo"
msgstr ""
#: BetfairToFpdb.py:109 CarbonToFpdb.py:165 EverestToFpdb.py:147
#: PokerStarsToFpdb.py:223
msgid "No match in readHandInfo."
msgid "Output being written to %s"
msgstr ""
#: BetfairToFpdb.py:123
@ -138,11 +130,6 @@ msgstr ""
msgid "DEBUG: "
msgstr ""
#: BetfairToFpdb.py:199 OnGameToFpdb.py:337 PokerStarsToFpdb.py:439
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
#: Card.py:431
msgid "fpdb card encoding(same as pokersource)"
msgstr ""
@ -229,16 +216,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults."
msgstr ""
#: Configuration.py:714
#: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s"
msgstr ""
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
#: Configuration.py:721
msgid "Error parsing %s. See error log file."
msgstr ""
@ -525,39 +506,39 @@ msgstr ""
msgid "***Error sending finish: "
msgstr ""
#: Database.py:2401
#: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney"
msgstr ""
#: Database.py:2414
#: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr ""
#: Database.py:2540
#: Database.py:2554
msgid "HandToWrite.init error: "
msgstr ""
#: Database.py:2590
#: Database.py:2604
msgid "HandToWrite.set_all error: "
msgstr ""
#: Database.py:2621
#: Database.py:2635
msgid "nutOmatic is id_player = %d"
msgstr ""
#: Database.py:2629
#: Database.py:2643
msgid "query plan: "
msgstr ""
#: Database.py:2638
#: Database.py:2652
msgid "cards ="
msgstr ""
#: Database.py:2641
#: Database.py:2655
msgid "get_stats took: %4.3f seconds"
msgstr ""
#: Database.py:2643
#: Database.py:2657
msgid "press enter to continue"
msgstr ""
@ -569,6 +550,10 @@ msgstr ""
msgid "Everleaf readStudPlayerCards is only a stub."
msgstr ""
#: EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
msgstr ""
#: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s"
msgstr ""
@ -589,31 +574,31 @@ msgstr ""
msgid "Show Number of _Players"
msgstr ""
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "And:"
msgstr ""
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "Between:"
msgstr ""
#: Filters.py:55
msgid "Games:"
#: Filters.py:55 GuiPrefs.py:33
msgid "Games"
msgstr ""
#: Filters.py:55 TourneyFilters.py:50
#: Filters.py:55 GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:"
msgstr ""
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr ""
#: Filters.py:56
msgid "Limits:"
msgstr ""
#: Filters.py:56 TourneyFilters.py:50
#: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:"
msgstr ""
@ -625,7 +610,7 @@ msgstr ""
msgid "Show Position Stats"
msgstr ""
#: Filters.py:58 TourneyFilters.py:51
#: Filters.py:58 TourneyFilters.py:53
msgid "Date:"
msgstr ""
@ -645,7 +630,7 @@ msgstr ""
msgid "New packing box created!"
msgstr ""
#: Filters.py:106 TourneyFilters.py:114
#: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr ""
@ -781,7 +766,7 @@ msgid "Lim_Blinds has no lookup for '%s'"
msgstr ""
#: FulltiltToFpdb.py:267
msgid "readHandInfo: Raising FpdbParseError"
msgid "Raising FpdbParseError"
msgstr ""
#: FulltiltToFpdb.py:369
@ -1193,7 +1178,7 @@ msgid "Host Computer"
msgstr ""
#: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s"
msgid "addDB.run: response is %s, accept is %s"
msgstr ""
#: GuiDatabase.py:495
@ -1270,99 +1255,99 @@ msgstr ""
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n"
" install numpy and matplotlib if you want to use graphs."
"Failed to load libs for graphing, graphing will not function. Please install "
"numpy and matplotlib if you want to use graphs."
msgstr ""
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51
#: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
msgid ""
"This is of no consequence for other parts of the program, e.g. import \n"
" and HUD are NOT affected by this problem."
"This is of no consequence for other parts of the program, e.g. import and "
"HUD are NOT affected by this problem."
msgstr ""
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
#: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph"
msgstr ""
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File"
msgstr ""
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232
#: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: "
msgstr ""
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159
#: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars"
msgstr ""
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164
#: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271
msgid "No player ids found"
msgstr ""
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218
msgid "No limits found"
msgstr ""
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174
#: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s"
msgstr ""
#: GuiGraphViewer.py:193
#: GuiGraphViewer.py:191
msgid "Hands"
msgstr ""
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182
#: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found"
msgstr ""
#: GuiGraphViewer.py:221
#: GuiGraphViewer.py:219
msgid ""
"Hands: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiGraphViewer.py:222
#: GuiGraphViewer.py:220
msgid "Showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:223
#: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:231
#: GuiGraphViewer.py:229
msgid "Profit graph for ring games"
msgstr ""
#: GuiGraphViewer.py:234
#: GuiGraphViewer.py:232
msgid ""
"Hands: %d\n"
"Profit (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:236
#: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:238
#: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276
#: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:"
msgstr ""
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289
#: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported"
msgstr ""
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307
#: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created"
msgstr ""
@ -1491,14 +1476,6 @@ msgstr ""
msgid "Import"
msgstr "_Import"
#: GuiPrefs.py:33
msgid "Games"
msgstr ""
#: GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: GuiPrefs.py:34
msgid "Popup Windows"
msgstr ""
@ -1569,7 +1546,7 @@ msgid "Setting"
msgstr ""
#: GuiPrefs.py:78
msgid "Value (double-click to change)"
msgid "Value (double-click to change)"
msgstr ""
#: GuiPrefs.py:178
@ -1837,11 +1814,11 @@ msgid "Flop"
msgstr ""
#: GuiStove.py:134
msgid "Gametype:"
msgid "Gametype"
msgstr ""
#: GuiStove.py:137
msgid "Players:"
msgid "Players"
msgstr ""
#: GuiStove.py:143
@ -1884,17 +1861,17 @@ msgstr ""
msgid "called update_flop_output_pane"
msgstr ""
#: GuiTourneyGraphViewer.py:178
#: GuiTourneyGraphViewer.py:176
msgid "Tournaments"
msgstr ""
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218
#: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid ""
"Tournaments: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiTourneyGraphViewer.py:215
#: GuiTourneyGraphViewer.py:213
msgid "Tournament Results"
msgstr ""
@ -2061,9 +2038,8 @@ msgstr ""
msgid "hud_main: Game changed."
msgstr ""
#: HUD_main.pyw:144
#, fuzzy
msgid "Terminating normally."
#: HUD_main.pyw:144 fpdb.pyw:971
msgid "Quitting normally"
msgstr "normalne wychodzenie"
#: HUD_main.pyw:205
@ -2851,18 +2827,9 @@ msgstr ""
msgid "Cannot read GameType for current hand"
msgstr ""
#: PartyPokerToFpdb.py:348
#: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
#, fuzzy
msgid "Failed to detect currency. HID: %s: '%s'"
msgstr "nie wykryto waluty"
#: PartyPokerToFpdb.py:536
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: PokerStarsToFpdb.py:265
#, fuzzy
msgid "Failed to detect currency: '%s'"
msgid "Failed to detect currency. Hand ID: %s: '%s'"
msgstr "nie wykryto waluty"
#: SplitHandHistory.py:76
@ -3152,10 +3119,14 @@ msgid "tournament tracker starting\n"
msgstr "tracker turniejowy rozpoczyna\n"
#: TourneyFilters.py:52
msgid "Sites:"
msgstr ""
#: TourneyFilters.py:54
msgid "Tourney Type"
msgstr "Rodzaj turnieju"
#: TourneyFilters.py:86
#: TourneyFilters.py:88
msgid "setting numTourneys:"
msgstr "ustawianie numTourneys:"
@ -3335,6 +3306,10 @@ msgstr ""
"Ten moduł został napisany i przetestowany z GTK w wersji 2.8.18. Używasz "
"wersji %d.%d.%d. Twój milage może się różnić."
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
msgid "unimplemented readAction: '%s' '%s'"
msgstr ""
#: WinTables.py:81
#, fuzzy
msgid "Window %s not found. Skipping."
@ -3344,10 +3319,6 @@ msgstr "nie znaleziono stołu %s - pomijanie\n"
msgid "self.window doesn't exist? why?"
msgstr "self.window nie istnieje? dlaczego?"
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr "nie wykryto waluty"
#: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'"
msgstr ""
@ -3495,13 +3466,17 @@ msgstr "Liczba rozdań: "
msgid ""
"\n"
"Number of Tourneys: "
msgstr "Liczba turniejów: "
msgstr ""
"\n"
"Liczba turniejów: "
#: fpdb.pyw:349
msgid ""
"\n"
"Number of TourneyTypes: "
msgstr "Liczba rodzajów turnieju: "
msgstr ""
"\n"
"Liczba rodzajów turnieju: "
#: fpdb.pyw:350
msgid "Database Statistics"
@ -3580,7 +3555,7 @@ msgid ""
"and you will have to re-import your histories.\n"
msgstr ""
" Jeżeli już istnieją tabele w bazie danych %s na %s zostaną one usunięte i "
"będziesz musiał ponownie zaimportować historię rozdań."
"będziesz musiał ponownie zaimportować historię rozdań.\n"
#: fpdb.pyw:547
msgid "This may take a while."
@ -3900,10 +3875,6 @@ msgstr ""
"\n"
"Nie udało się pobrać blokady ogólnej, jest ona aktualnie używana przez %s"
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr "normalne wychodzenie"
#: fpdb.pyw:996
msgid "Global lock released.\n"
msgstr "Uwolniono ogólną blokadę.\n"
@ -3996,7 +3967,9 @@ msgstr ""
msgid ""
"\n"
"Any major error will be reported there _only_.\n"
msgstr "Błędy o dużym znaczeniu będą kierowane tylko tam.\n"
msgstr ""
"\n"
"Błędy o dużym znaczeniu będą kierowane tylko tam.\n"
#: fpdb.pyw:1208
msgid "fpdb starting ..."
@ -4180,3 +4153,14 @@ msgstr ""
"\n"
"Nie znaleziono katalogów GTK w podanej przez Ciebie ścieżce. Zainstaluj GTK "
"lub wprowadź ścieżkę ręcznie.\n"
#, fuzzy
#~ msgid "Failed to detect currency: '%s'"
#~ msgstr "nie wykryto waluty"
#~ msgid "failed to detect currency"
#~ msgstr "nie wykryto waluty"
#, fuzzy
#~ msgid "Terminating normally."
#~ msgstr "normalne wychodzenie"

View File

@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Free Poker Database\n"
"POT-Creation-Date: 2011-03-10 05:10+CET\n"
"POT-Creation-Date: 2011-03-12 21:23+CET\n"
"PO-Revision-Date: 2011-03-04 18:18+0000\n"
"Last-Translator: Lexej <alexej@glyvin.com>\n"
"Language-Team: Russian (Russia) <>\n"
@ -38,16 +38,18 @@ msgstr "Невозможно определить тип игры: '%s'"
msgid "determineGameType: Raising FpdbParseError"
msgstr "determineGameType: FpdbParseError"
#: AbsoluteToFpdb.py:204
msgid "readHandInfo: Didn't match: '%s'"
msgstr "readHandInfo: нет соответствия: '%s'"
#: AbsoluteToFpdb.py:205
msgid "Absolute: Didn't match re_HandInfo: '%s'"
msgstr "Absolute: re_HandInfo не соответствует: '%s'"
#: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
#: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
#: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: iPokerToFpdb.py:158
#, fuzzy
msgid "No match in readHandInfo: '%s'"
msgstr "Нет соответствия в readHandInfo."
#: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename"
#, fuzzy
msgid "File name didn't match re_*InfoFromFilename"
msgstr "readHandInfo: имя файла не соответствует re_*InfoFromFilename"
#: AbsoluteToFpdb.py:208
@ -55,7 +57,8 @@ msgid "File name: %s"
msgstr "Имя файла: %s"
#: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'"
#, fuzzy
msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr "Absolute: Не соответствует re_*InfoFromFilename: '%s'"
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
@ -80,25 +83,25 @@ msgstr "Нет малого блайнда"
msgid "Absolute readStudPlayerCards is only a stub."
msgstr "Absolute readStudPlayerCards это заглушка."
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234
#: EverestToFpdb.py:235 EverleafToFpdb.py:288
#, fuzzy
msgid "Unimplemented readAction: %s %s"
msgstr "DEBUG: не выполнена readAction: '%s' '%s'"
#: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:298
#: AbsoluteToFpdb.py:401 BetfairToFpdb.py:222 CarbonToFpdb.py:297
#: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history"
msgstr "разбор файлов истории"
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:299
#: AbsoluteToFpdb.py:402 BetfairToFpdb.py:223 CarbonToFpdb.py:298
#: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to"
msgstr "перенаправить перевод"
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:300
#: AbsoluteToFpdb.py:403 BetfairToFpdb.py:224 CarbonToFpdb.py:299
#: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input"
@ -109,19 +112,10 @@ msgid "Could not find file %s"
msgstr "Не удалось найти файл %s"
#: Anonymise.py:55
msgid "Output being written to"
#, fuzzy
msgid "Output being written to %s"
msgstr "Вывод будет записан в файл "
#: BetfairToFpdb.py:108 CarbonToFpdb.py:163 EverestToFpdb.py:145
#: EverleafToFpdb.py:145 iPokerToFpdb.py:156 iPokerToFpdb.py:158
msgid "Didn't match re_HandInfo"
msgstr "re_HandInfo не соответствует"
#: BetfairToFpdb.py:109 CarbonToFpdb.py:165 EverestToFpdb.py:147
#: PokerStarsToFpdb.py:223
msgid "No match in readHandInfo."
msgstr "Нет соответствия в readHandInfo."
#: BetfairToFpdb.py:123
msgid "readPlayerStacks: Less than 2 players found in a hand"
msgstr "readPlayerStacks: Менее двух игроков в руке"
@ -139,12 +133,6 @@ msgstr "Bring-In не найден"
msgid "DEBUG: "
msgstr ""
#: BetfairToFpdb.py:199 OnGameToFpdb.py:337 PokerStarsToFpdb.py:439
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
#, fuzzy
msgid "unimplemented readAction: '%s' '%s'"
msgstr "DEBUG: не выполнена readAction: '%s' '%s'"
#: Card.py:431
msgid "fpdb card encoding(same as pokersource)"
msgstr "fpdb кодирование карт (так же, как и в pokersource)"
@ -236,16 +224,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults."
msgstr ""
#: Configuration.py:714
#: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s"
msgstr ""
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
#: Configuration.py:721
msgid "Error parsing %s. See error log file."
msgstr ""
@ -532,39 +514,39 @@ msgstr ""
msgid "***Error sending finish: "
msgstr ""
#: Database.py:2401
#: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney"
msgstr ""
#: Database.py:2414
#: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr ""
#: Database.py:2540
#: Database.py:2554
msgid "HandToWrite.init error: "
msgstr ""
#: Database.py:2590
#: Database.py:2604
msgid "HandToWrite.set_all error: "
msgstr ""
#: Database.py:2621
#: Database.py:2635
msgid "nutOmatic is id_player = %d"
msgstr ""
#: Database.py:2629
#: Database.py:2643
msgid "query plan: "
msgstr ""
#: Database.py:2638
#: Database.py:2652
msgid "cards ="
msgstr ""
#: Database.py:2641
#: Database.py:2655
msgid "get_stats took: %4.3f seconds"
msgstr ""
#: Database.py:2643
#: Database.py:2657
msgid "press enter to continue"
msgstr ""
@ -576,6 +558,11 @@ msgstr ""
msgid "Everleaf readStudPlayerCards is only a stub."
msgstr ""
#: EverleafToFpdb.py:288
#, fuzzy
msgid "Unimplemented readAction: %s %s"
msgstr "DEBUG: не выполнена readAction: '%s' '%s'"
#: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s"
msgstr ""
@ -596,31 +583,31 @@ msgstr ""
msgid "Show Number of _Players"
msgstr ""
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "And:"
msgstr ""
#: Filters.py:54 TourneyFilters.py:51
#: Filters.py:54 TourneyFilters.py:53
msgid "Between:"
msgstr ""
#: Filters.py:55
msgid "Games:"
#: Filters.py:55 GuiPrefs.py:33
msgid "Games"
msgstr ""
#: Filters.py:55 TourneyFilters.py:50
#: Filters.py:55 GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:"
msgstr "Херо:"
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr ""
#: Filters.py:56
msgid "Limits:"
msgstr ""
#: Filters.py:56 TourneyFilters.py:50
#: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:"
msgstr ""
@ -632,7 +619,7 @@ msgstr ""
msgid "Show Position Stats"
msgstr ""
#: Filters.py:58 TourneyFilters.py:51
#: Filters.py:58 TourneyFilters.py:53
msgid "Date:"
msgstr "Дата:"
@ -652,7 +639,7 @@ msgstr "Турнир"
msgid "New packing box created!"
msgstr ""
#: Filters.py:106 TourneyFilters.py:114
#: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr ""
@ -789,7 +776,7 @@ msgstr ""
#: FulltiltToFpdb.py:267
#, fuzzy
msgid "readHandInfo: Raising FpdbParseError"
msgid "Raising FpdbParseError"
msgstr "determineGameType: FpdbParseError"
#: FulltiltToFpdb.py:369
@ -1203,7 +1190,7 @@ msgid "Host Computer"
msgstr ""
#: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s"
msgid "addDB.run: response is %s, accept is %s"
msgstr ""
#: GuiDatabase.py:495
@ -1280,99 +1267,99 @@ msgstr ""
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n"
" install numpy and matplotlib if you want to use graphs."
"Failed to load libs for graphing, graphing will not function. Please install "
"numpy and matplotlib if you want to use graphs."
msgstr ""
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51
#: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
msgid ""
"This is of no consequence for other parts of the program, e.g. import \n"
" and HUD are NOT affected by this problem."
"This is of no consequence for other parts of the program, e.g. import and "
"HUD are NOT affected by this problem."
msgstr ""
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
#: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph"
msgstr ""
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File"
msgstr ""
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232
#: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: "
msgstr ""
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159
#: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars"
msgstr ""
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164
#: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271
msgid "No player ids found"
msgstr ""
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218
msgid "No limits found"
msgstr ""
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174
#: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s"
msgstr ""
#: GuiGraphViewer.py:193
#: GuiGraphViewer.py:191
msgid "Hands"
msgstr ""
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182
#: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found"
msgstr ""
#: GuiGraphViewer.py:221
#: GuiGraphViewer.py:219
msgid ""
"Hands: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiGraphViewer.py:222
#: GuiGraphViewer.py:220
msgid "Showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:223
#: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f"
msgstr ""
#: GuiGraphViewer.py:231
#: GuiGraphViewer.py:229
msgid "Profit graph for ring games"
msgstr ""
#: GuiGraphViewer.py:234
#: GuiGraphViewer.py:232
msgid ""
"Hands: %d\n"
"Profit (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:236
#: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:238
#: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f"
msgstr ""
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276
#: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:"
msgstr ""
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289
#: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported"
msgstr ""
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307
#: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created"
msgstr ""
@ -1501,14 +1488,6 @@ msgstr ""
msgid "Import"
msgstr "Автоимпорт"
#: GuiPrefs.py:33
msgid "Games"
msgstr ""
#: GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: GuiPrefs.py:34
msgid "Popup Windows"
msgstr ""
@ -1579,7 +1558,7 @@ msgid "Setting"
msgstr ""
#: GuiPrefs.py:78
msgid "Value (double-click to change)"
msgid "Value (double-click to change)"
msgstr ""
#: GuiPrefs.py:178
@ -1847,11 +1826,11 @@ msgid "Flop"
msgstr ""
#: GuiStove.py:134
msgid "Gametype:"
msgid "Gametype"
msgstr ""
#: GuiStove.py:137
msgid "Players:"
msgid "Players"
msgstr ""
#: GuiStove.py:143
@ -1896,17 +1875,17 @@ msgstr ""
msgid "called update_flop_output_pane"
msgstr ""
#: GuiTourneyGraphViewer.py:178
#: GuiTourneyGraphViewer.py:176
msgid "Tournaments"
msgstr ""
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218
#: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid ""
"Tournaments: %d\n"
"Profit: $%.2f"
msgstr ""
#: GuiTourneyGraphViewer.py:215
#: GuiTourneyGraphViewer.py:213
msgid "Tournament Results"
msgstr ""
@ -2069,8 +2048,8 @@ msgstr ""
msgid "hud_main: Game changed."
msgstr ""
#: HUD_main.pyw:144
msgid "Terminating normally."
#: HUD_main.pyw:144 fpdb.pyw:971
msgid "Quitting normally"
msgstr ""
#: HUD_main.pyw:205
@ -2853,16 +2832,8 @@ msgstr ""
msgid "Cannot read GameType for current hand"
msgstr ""
#: PartyPokerToFpdb.py:348
msgid "Failed to detect currency. HID: %s: '%s'"
msgstr ""
#: PartyPokerToFpdb.py:536
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: PokerStarsToFpdb.py:265
msgid "Failed to detect currency: '%s'"
#: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
msgid "Failed to detect currency. Hand ID: %s: '%s'"
msgstr ""
#: SplitHandHistory.py:76
@ -3145,10 +3116,14 @@ msgid "tournament tracker starting\n"
msgstr ""
#: TourneyFilters.py:52
msgid "Sites:"
msgstr ""
#: TourneyFilters.py:54
msgid "Tourney Type"
msgstr ""
#: TourneyFilters.py:86
#: TourneyFilters.py:88
msgid "setting numTourneys:"
msgstr ""
@ -3326,6 +3301,11 @@ msgid ""
"using version %d.%d.%d. Your milage may vary."
msgstr ""
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
#, fuzzy
msgid "unimplemented readAction: '%s' '%s'"
msgstr "DEBUG: не выполнена readAction: '%s' '%s'"
#: WinTables.py:81
msgid "Window %s not found. Skipping."
msgstr ""
@ -3334,10 +3314,6 @@ msgstr ""
msgid "self.window doesn't exist? why?"
msgstr ""
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr ""
#: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'"
msgstr ""
@ -3868,10 +3844,6 @@ msgid ""
"Failed to get global lock, it is currently held by %s"
msgstr ""
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr ""
#: fpdb.pyw:996
msgid "Global lock released.\n"
msgstr ""
@ -3950,8 +3922,7 @@ msgstr ""
"пройдите по ссылке https://lists.sourceforge.net/lists/listinfo/fpdb-"
"announce и подпишитесь на уведомления.\n"
" Если Вы хотите следить за разработкой более пристально, подпишитесь здесь "
"https://lists.sourceforge.net/lists/listinfo/fpdb-main.\n"
"\n"
"https://lists.sourceforge.net/lists/listinfo/fpdb-main."
#: fpdb.pyw:1084
msgid "Help"
@ -4139,6 +4110,19 @@ msgid ""
"manually\n"
msgstr ""
#, fuzzy
#~ msgid "Didn't match re_HandInfo: '%s'"
#~ msgstr "re_HandInfo не соответствует"
#~ msgid "Didn't match re_HandInfo"
#~ msgstr "re_HandInfo не соответствует"
#~ msgid "readHandInfo: Didn't match: '%s'"
#~ msgstr "readHandInfo: нет соответствия: '%s'"
#~ msgid "Absolute: Didn't match re_HandInfo: '%s'"
#~ msgstr "Absolute: re_HandInfo не соответствует: '%s'"
#~ msgid "determineGameType: Unable to recognise gametype from: '%s'"
#~ msgstr "determineGameType: Невозможно определить тип игры: '%s'"

Binary file not shown.

Binary file not shown.

View File

@ -12,6 +12,13 @@ msgmerge --update locale/fpdb-hu_HU.po locale/fpdb-en_GB.pot
msgmerge --update locale/fpdb-pl_PL.po locale/fpdb-en_GB.pot
msgmerge --update locale/fpdb-ru_RU.po locale/fpdb-en_GB.pot
msgfmt -c locale/fpdb-de_DE.po
msgfmt -c locale/fpdb-es_ES.po
msgfmt -c locale/fpdb-fr_FR.po
msgfmt -c locale/fpdb-hu_HU.po
msgfmt -c locale/fpdb-pl_PL.po
msgfmt -c locale/fpdb-ru_RU.po
echo "compiling mo files"
python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po
python /usr/share/doc/python-2.*/examples/Tools/i18n/msgfmt.py --output-file=locale/es/LC_MESSAGES/fpdb.mo locale/fpdb-es_ES.po

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,63 @@
#Game No : 362981853
***** Cassava Hand History for Game 362981853 *****
0.50/1 Blinds Fix Limit Holdem - *** 11 03 2011 16:29:14
Table Suzano (Practice Play)
Seat 9 is the button
Total number of players : 7
Seat 1: herbaroquera ( 991 )
Seat 3: gurji077 ( 258.55 )
Seat 5: Rookie33333 ( 236 )
Seat 6: zuvis14 ( 753.65 )
Seat 7: sausekater ( 1,000 )
Seat 8: Trowland502 ( 1,258.25 )
Seat 9: lilybeat11 ( 11,380.43 )
herbaroquera posts small blind [0.50]
gurji077 posts big blind [1]
sausekater posts big blind [1]
** Dealing down cards **
Rookie33333 calls [1]
zuvis14 calls [1]
sausekater checks
Trowland502 calls [1]
lilybeat11 calls [1]
herbaroquera calls [0.50]
gurji077 checks
** Dealing flop ** [ 6h, 7c, Jh ]
herbaroquera checks
gurji077 checks
Rookie33333 checks
zuvis14 checks
sausekater bets [1]
Trowland502 calls [1]
lilybeat11 calls [1]
herbaroquera calls [1]
gurji077 calls [1]
Rookie33333 folds
zuvis14 calls [1]
** Dealing turn ** [ 2s ]
herbaroquera checks
gurji077 checks
zuvis14 checks
sausekater bets [2]
Trowland502 calls [2]
lilybeat11 calls [2]
herbaroquera calls [2]
gurji077 calls [2]
zuvis14 folds
** Dealing river ** [ 8d ]
herbaroquera checks
gurji077 checks
sausekater bets [2]
Trowland502 calls [2]
lilybeat11 calls [2]
herbaroquera calls [2]
gurji077 folds
** Summary **
sausekater shows [ 2d, Jc ]
Trowland502 mucks [ 6c, Kd ]
lilybeat11 mucks [ 8h, 7d ]
herbaroquera mucks [ Tc, Ad ]
sausekater collected [ 29.75 ]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,145 @@
#Game No : 362978981
***** Cassava Hand History for Game 362978981 *****
15/30 Blinds Fix Limit Omaha - *** 11 03 2011 15:43:24
Table Bratislava (Practice Play)
Seat 1 is the button
Total number of players : 5
Seat 1: CARNERA4 ( 4,202.50 )
Seat 2: freshmoney2y ( 330 )
Seat 3: rolirs301 ( 875 )
Seat 4: physco30 ( 1,300 )
Seat 9: jamiemaxey ( 920 )
freshmoney2y posts small blind [15]
rolirs301 posts big blind [30]
** Dealing down cards **
physco30 calls [30]
jamiemaxey raises [60]
CARNERA4 calls [60]
freshmoney2y calls [45]
rolirs301 calls [30]
physco30 calls [30]
** Dealing flop ** [ 7c, Ah, 2c ]
freshmoney2y checks
rolirs301 checks
physco30 checks
jamiemaxey bets [30]
CARNERA4 calls [30]
freshmoney2y calls [30]
rolirs301 calls [30]
physco30 calls [30]
** Dealing turn ** [ 7d ]
freshmoney2y checks
rolirs301 checks
physco30 checks
jamiemaxey bets [60]
CARNERA4 calls [60]
freshmoney2y folds
rolirs301 calls [60]
physco30 calls [60]
** Dealing river ** [ Jc ]
rolirs301 checks
physco30 bets [60]
jamiemaxey calls [60]
CARNERA4 calls [60]
rolirs301 folds
** Summary **
physco30 shows [ Th, 8d, 9c, Tc ]
jamiemaxey mucks [ 5h, 5d, 4d, As ]
CARNERA4 shows [ Jd, Kc, Kd, 7h ]
CARNERA4 collected [ 867.50 ]
#Game No : 362979074
***** Cassava Hand History for Game 362979074 *****
15/30 Blinds Fix Limit Omaha - *** 11 03 2011 15:43:46
Table Bratislava (Practice Play)
Seat 2 is the button
Total number of players : 5
Seat 1: CARNERA4 ( 4,860 )
Seat 2: freshmoney2y ( 240 )
Seat 3: rolirs301 ( 725 )
Seat 4: physco30 ( 1,090 )
Seat 9: jamiemaxey ( 710 )
rolirs301 posts small blind [15]
physco30 posts big blind [30]
** Dealing down cards **
jamiemaxey calls [30]
CARNERA4 calls [30]
freshmoney2y calls [30]
rolirs301 calls [15]
physco30 checks
** Dealing flop ** [ Js, 8c, 9s ]
rolirs301 checks
physco30 checks
jamiemaxey bets [30]
CARNERA4 calls [30]
freshmoney2y calls [30]
rolirs301 raises [60]
physco30 calls [60]
jamiemaxey raises [60]
CARNERA4 calls [60]
freshmoney2y calls [60]
rolirs301 calls [30]
physco30 calls [30]
** Dealing turn ** [ Ks ]
rolirs301 bets [60]
physco30 folds
jamiemaxey raises [120]
CARNERA4 folds
freshmoney2y calls [120]
rolirs301 calls [60]
** Dealing river ** [ Qh ]
rolirs301 checks
jamiemaxey bets [60]
rolirs301 calls [60]
** Summary **
jamiemaxey shows [ 7s, Jc, 5s, 4s ]
freshmoney2y mucks [ Ah, 9h, Td, 5d ]
rolirs301 shows [ 3h, 8s, Th, Qs ]
rolirs301 collected [ 957.50 ]
rolirs301 collected [ 120 ]
#Game No : 362979128
***** Cassava Hand History for Game 362979128 *****
15/30 Blinds Fix Limit Omaha - *** 11 03 2011 15:44:40
Table Bratislava (Practice Play)
Seat 3 is the button
Total number of players : 4
Seat 1: CARNERA4 ( 4,740 )
Seat 3: rolirs301 ( 1,502.50 )
Seat 4: physco30 ( 970 )
Seat 9: jamiemaxey ( 410 )
physco30 posts small blind [15]
jamiemaxey posts big blind [30]
** Dealing down cards **
CARNERA4 calls [30]
rolirs301 calls [30]
physco30 calls [15]
jamiemaxey checks
** Dealing flop ** [ 3c, 7s, 2s ]
physco30 checks
jamiemaxey checks
CARNERA4 checks
rolirs301 checks
** Dealing turn ** [ 7h ]
physco30 checks
jamiemaxey bets [60]
CARNERA4 calls [60]
rolirs301 folds
physco30 folds
** Dealing river ** [ Ts ]
jamiemaxey bets [60]
CARNERA4 raises [120]
jamiemaxey raises [120]
CARNERA4 raises [120]
jamiemaxey calls [60]
** Summary **
CARNERA4 shows [ 3s, 7c, 3h, 6c ]
jamiemaxey shows [ 6d, 7d, Ks, Th ]
jamiemaxey collected [ 717.50 ]

View File

@ -0,0 +1,68 @@
#Game No : 440985926
***** Cassava Hand History for Game 440985926 *****
15/30 Blinds Fix Limit OmahaHL - *** 11 03 2011 15:43:53
Table Cologne (Practice Play)
Seat 3 is the button
Total number of players : 9
Seat 1: peefoot ( 1,459.13 )
Seat 2: Borr_09 ( 1,200 )
Seat 3: harryabc ( 483.75 )
Seat 4: watdafaq ( 2,476 )
Seat 5: Dlady14 ( 7,627.14 )
Seat 6: nugsy20 ( 42,530.55 )
Seat 7: SPURS..UK ( 870 )
Seat 8: jjak13 ( 661.50 )
Seat 9: slickey65 ( 212,388.17 )
watdafaq posts small blind [15]
Dlady14 posts big blind [30]
Borr_09 folds
** Dealing down cards **
nugsy20 calls [30]
SPURS..UK calls [30]
jjak13 calls [30]
slickey65 calls [30]
peefoot calls [30]
harryabc calls [30]
watdafaq calls [15]
Dlady14 checks
** Dealing flop ** [ 2s, 5h, Jc ]
watdafaq checks
Dlady14 checks
nugsy20 checks
SPURS..UK checks
jjak13 checks
slickey65 checks
peefoot folds
harryabc checks
** Dealing turn ** [ Ks ]
watdafaq checks
Dlady14 checks
nugsy20 checks
SPURS..UK checks
jjak13 checks
slickey65 checks
harryabc checks
** Dealing river ** [ 4d ]
watdafaq checks
Dlady14 checks
nugsy20 checks
SPURS..UK checks
jjak13 bets [60]
slickey65 folds
harryabc calls [60]
watdafaq folds
Dlady14 calls [60]
nugsy20 calls [60]
SPURS..UK folds
** Summary **
jjak13 shows [ 8h, 7s, 3d, 9s ]
harryabc shows [ Qd, Qh, 2d, Jd ]
(Hi: Jd, Jc, 2d, 2s, Ks)
Dlady14 mucks [ 8c, 6d, Jh, 6h ]
nugsy20 shows [ 6c, Ah, Ac, 8s ]
(Lo: 2s, 4d, 5h, 6c, Ac)
harryabc collected [ 238 ]
nugsy20 collected [ 238 ]

View File

@ -0,0 +1,41 @@
#Game No : 311162661
***** Cassava Hand History for Game 311162661 *****
$0.01/$0.02 Blinds Fix Limit Holdem - *** 08 03 2011 13:31:55
Table Guarapuava (Real Money)
Seat 2 is the button
Total number of players : 4
Seat 2: Barrydos ( $2.13 )
Seat 4: wanagu22 ( $0.39 )
Seat 9: SkiNNeR14 ( $0.04 )
Seat 10: pokergallo ( $2.27 )
wanagu22 posts small blind [$0.01]
SkiNNeR14 posts big blind [$0.02]
** Dealing down cards **
pokergallo calls [$0.02]
Barrydos calls [$0.02]
wanagu22 calls [$0.01]
SkiNNeR14 raises [$0.02]
pokergallo calls [$0.02]
Barrydos calls [$0.02]
wanagu22 calls [$0.02]
** Dealing flop ** [ 4d, 5h, 9d ]
wanagu22 bets [$0.02]
pokergallo calls [$0.02]
Barrydos calls [$0.02]
** Dealing turn ** [ 5c ]
wanagu22 bets [$0.04]
pokergallo calls [$0.04]
Barrydos raises [$0.08]
wanagu22 calls [$0.04]
pokergallo calls [$0.04]
** Dealing river ** [ 6c ]
wanagu22 bets [$0.04]
pokergallo folds
Barrydos calls [$0.04]
** Summary **
wanagu22 shows [ 7d, 5d ]
SkiNNeR14 shows [ As, 5s ]
Barrydos mucks [ 4s, Ac ]
SkiNNeR14 collected [ $0.16 ]
wanagu22 collected [ $0.36 ]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,86 @@
#Game No : 361198949
***** Cassava Hand History for Game 361198949 *****
1/2 Blinds No Limit Holdem - *** 17 02 2011 15:29:25
Table Barueri (Practice Play)
Seat 5 is the button
Total number of players : 6
Seat 1: rensi66 ( 198 )
Seat 3: Champs2011 ( 514 )
Seat 5: orcogro2 ( 411 )
Seat 7: genu74 ( 1,283.15 )
Seat 9: tosas23 ( 251 )
Seat 10: manit2522 ( 311 )
genu74 posts small blind [1]
tosas23 posts big blind [2]
** Dealing down cards **
manit2522 raises [40]
rensi66 calls [40]
Champs2011 calls [40]
orcogro2 folds
genu74 calls [39]
tosas23 folds
** Dealing flop ** [ 5d, 5c, Jd ]
genu74 checks
manit2522 bets [200]
rensi66 calls [158]
Champs2011 calls [200]
genu74 calls [200]
** Dealing turn ** [ Kd ]
genu74 checks
manit2522 bets [71]
Champs2011 calls [71]
genu74 calls [71]
** Dealing river ** [ 7d ]
genu74 checks
Champs2011 bets [203]
genu74 folds
** Summary **
rensi66 shows [ Qc, Qd ]
Champs2011 shows [ Tc, 9d ]
manit2522 shows [ Td, Jh ]
rensi66 collected [ 790 ]
manit2522 collected [ 339 ]
#Game No : 361199073
***** Cassava Hand History for Game 361199073 *****
1/2 Blinds No Limit Holdem - *** 17 02 2011 15:30:18
Table Barueri (Practice Play)
Seat 7 is the button
Total number of players : 6
Seat 1: rensi66 ( 790 )
Seat 3: Champs2011 ( 203 )
Seat 5: Borr_09 ( 200 )
Seat 7: genu74 ( 972.15 )
Seat 9: tosas23 ( 249 )
Seat 10: manit2522 ( 339 )
tosas23 posts small blind [1]
manit2522 posts big blind [2]
Borr_09 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ Kh, 7d ]
rensi66 calls [2]
Champs2011 raises [4]
Borr_09 calls [2]
genu74 calls [4]
tosas23 calls [3]
manit2522 calls [2]
rensi66 calls [2]
** Dealing flop ** [ 4s, Jc, Ad ]
tosas23 checks
manit2522 bets [200]
rensi66 folds
Champs2011 calls [199]
Borr_09 folds
genu74 folds
tosas23 folds
** Dealing turn ** [ Th ]
** Dealing river ** [ 3s ]
** Summary **
Champs2011 shows [ Qh, Qd ]
manit2522 shows [ 9s, Ac ]
manit2522 collected [ 418 ]

View File

@ -0,0 +1,48 @@
#Game No : 172275663
***** Cassava Hand History for Game 172275663 *****
$0.01/$0.02 Blinds No Limit Holdem - *** 04 02 2011 11:27:06
Table Huelva (Real Money)
Seat 10 is the button
Total number of players : 8
Seat 1: Aussie_No.1 ( $2.58 )
Seat 2: loffelj ( $4.14 )
Seat 3: campdog14 ( $1.37 )
Seat 5: Mendya. ( $2 )
Seat 6: Borr_09 ( $0.22 )
Seat 7: roughvan ( $1.23 )
Seat 9: border360 ( $2.34 )
Seat 10: guerrillero7 ( $1.97 )
Aussie_No.1 posts small blind [$0.01]
loffelj posts big blind [$0.02]
campdog14 posts dead blind [$0.01 + $0.02]
Mendya. posts dead blind [$0.01 + $0.02]
** Dealing down cards **
Dealt to Borr_09 [ Ad, 5c ]
campdog14 checks
Mendya. checks
Borr_09 folds
roughvan folds
border360 folds
guerrillero7 folds
Aussie_No.1 calls [$0.01]
loffelj checks
** Dealing flop ** [ 4s, Ac, 7h ]
Aussie_No.1 checks
loffelj checks
campdog14 checks
Mendya. bets [$0.06]
Aussie_No.1 folds
loffelj folds
campdog14 calls [$0.06]
** Dealing turn ** [ 4h ]
campdog14 checks
Mendya. checks
** Dealing river ** [ 4c ]
campdog14 checks
Mendya. bets [$0.15]
campdog14 calls [$0.15]
** Summary **
Mendya. shows [ Kd, 7c ]
campdog14 shows [ 7s, 5s ]
campdog14 collected [ $0.24 ]
Mendya. collected [ $1,024.24 ]

View File

@ -0,0 +1,645 @@
#Game No : 360044776
***** Cassava Hand History for Game 360044776 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 19:56:35
Table Alagoinhas (Practice Play)
Seat 9 is the button
Total number of players : 7
Seat 1: corobi14 ( 1,168.50 )
Seat 2: micuccim ( 198 )
Seat 3: cami999 ( 200 )
Seat 5: scottscc ( 210.25 )
Seat 7: pardies14 ( 758.60 )
Seat 8: CCsTHEMOMENT ( 37 )
Seat 9: cdewayne ( 196 )
corobi14 posts small blind [1]
micuccim posts big blind [2]
** Dealing down cards **
cami999 calls [2]
scottscc calls [2]
pardies14 calls [2]
CCsTHEMOMENT folds
cdewayne calls [2]
corobi14 calls [1]
micuccim checks
** Dealing flop ** [ 3d, As, 8c ]
corobi14 checks
micuccim checks
cami999 checks
scottscc checks
pardies14 checks
cdewayne checks
** Dealing turn ** [ 5d ]
corobi14 checks
micuccim checks
cami999 checks
scottscc bets [8]
pardies14 folds
cdewayne folds
corobi14 calls [8]
micuccim folds
cami999 calls [8]
** Dealing river ** [ 4h ]
corobi14 checks
cami999 checks
scottscc checks
** Summary **
corobi14 shows [ Ts, Td ]
cami999 mucks [ 3h, 9d ]
scottscc mucks [ Kd, 4c ]
corobi14 collected [ 34.20 ]
#Game No : 360044907
***** Cassava Hand History for Game 360044907 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 19:57:14
Table Alagoinhas (Practice Play)
Seat 1 is the button
Total number of players : 9
Seat 1: corobi14 ( 1,192.70 )
Seat 2: micuccim ( 196 )
Seat 3: cami999 ( 200 )
Seat 4: Borr_09 ( 200 )
Seat 5: scottscc ( 200.25 )
Seat 7: pardies14 ( 756.60 )
Seat 8: CCsTHEMOMENT ( 37 )
Seat 9: cdewayne ( 194 )
Seat 10: anthony104 ( 200 )
micuccim posts small blind [1]
cami999 posts big blind [2]
Borr_09 posts big blind [2]
anthony104 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ 6d, 2s ]
Borr_09 checks
scottscc calls [2]
pardies14 calls [2]
CCsTHEMOMENT calls [2]
cdewayne calls [2]
anthony104 checks
corobi14 calls [2]
micuccim raises [3]
cami999 calls [2]
Borr_09 folds
scottscc calls [2]
pardies14 calls [2]
CCsTHEMOMENT calls [2]
cdewayne calls [2]
anthony104 calls [2]
corobi14 calls [2]
** Dealing flop ** [ 3c, 4c, Ts ]
micuccim bets [2]
cami999 calls [2]
scottscc calls [2]
pardies14 calls [2]
CCsTHEMOMENT raises [33]
cdewayne folds
anthony104 folds
corobi14 calls [33]
micuccim calls [31]
cami999 folds
scottscc folds
pardies14 calls [31]
** Dealing turn ** [ 7c ]
micuccim checks
pardies14 checks
corobi14 bets [127.50]
micuccim folds
pardies14 folds
** Dealing river ** [ 9h ]
** Summary **
corobi14 shows [ Ac, Tc ]
CCsTHEMOMENT shows [ 5c, 6h ]
corobi14 collected [ 167 ]
#Game No : 360045081
***** Cassava Hand History for Game 360045081 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 19:59:07
Table Alagoinhas (Practice Play)
Seat 2 is the button
Total number of players : 7
Seat 1: corobi14 ( 1,322.70 )
Seat 2: micuccim ( 159 )
Seat 3: cami999 ( 200 )
Seat 4: Borr_09 ( 198 )
Seat 7: pardies14 ( 719.60 )
Seat 9: cdewayne ( 190 )
Seat 10: anthony104 ( 196 )
cami999 posts small blind [1]
Borr_09 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ Js, 4s ]
pardies14 calls [2]
cdewayne calls [2]
anthony104 calls [2]
corobi14 calls [2]
micuccim calls [2]
cami999 calls [1]
Borr_09 checks
** Dealing flop ** [ Qh, 5c, Td ]
cami999 checks
Borr_09 checks
pardies14 checks
cdewayne checks
anthony104 checks
corobi14 checks
micuccim checks
** Dealing turn ** [ 7h ]
cami999 checks
Borr_09 checks
pardies14 checks
cdewayne checks
anthony104 checks
corobi14 checks
micuccim checks
** Dealing river ** [ Kc ]
cami999 bets [14]
Borr_09 folds
pardies14 folds
cdewayne folds
anthony104 folds
corobi14 calls [14]
micuccim folds
** Summary **
cami999 shows [ Ks, Jc ]
corobi14 shows [ As, Kh ]
corobi14 collected [ 39.90 ]
#Game No : 360045183
***** Cassava Hand History for Game 360045183 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:00:13
Table Alagoinhas (Practice Play)
Seat 3 is the button
Total number of players : 8
Seat 1: corobi14 ( 1,346.60 )
Seat 2: micuccim ( 157 )
Seat 3: cami999 ( 200 )
Seat 4: Borr_09 ( 196 )
Seat 5: seba5233 ( 200 )
Seat 7: pardies14 ( 717.60 )
Seat 9: cdewayne ( 188 )
Seat 10: anthony104 ( 194 )
Borr_09 posts small blind [1]
seba5233 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ 2s, Jd ]
pardies14 calls [2]
cdewayne calls [2]
anthony104 calls [2]
corobi14 calls [2]
micuccim calls [2]
cami999 calls [2]
Borr_09 calls [1]
seba5233 raises [2]
pardies14 calls [2]
cdewayne folds
anthony104 calls [2]
corobi14 calls [2]
micuccim calls [2]
cami999 calls [2]
Borr_09 calls [2]
** Dealing flop ** [ 9h, Ah, 8s ]
Borr_09 checks
seba5233 bets [6]
pardies14 folds
anthony104 folds
corobi14 calls [6]
micuccim folds
cami999 calls [6]
Borr_09 folds
** Dealing turn ** [ 5s ]
seba5233 bets [24]
corobi14 folds
cami999 folds
** Summary **
seba5233 collected [ 45.60 ]
#Game No : 360045273
***** Cassava Hand History for Game 360045273 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:01:22
Table Alagoinhas (Practice Play)
Seat 4 is the button
Total number of players : 9
Seat 1: corobi14 ( 1,336.60 )
Seat 2: micuccim ( 153 )
Seat 3: cami999 ( 200 )
Seat 4: Borr_09 ( 192 )
Seat 5: seba5233 ( 235.60 )
Seat 7: pardies14 ( 713.60 )
Seat 8: punoperu ( 200 )
Seat 9: cdewayne ( 186 )
Seat 10: anthony104 ( 198 )
seba5233 posts small blind [1]
pardies14 posts big blind [2]
punoperu posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ 4s, 5h ]
punoperu checks
cdewayne calls [2]
anthony104 calls [2]
corobi14 calls [2]
micuccim folds
cami999 calls [2]
Borr_09 folds
seba5233 raises [3]
pardies14 calls [2]
punoperu calls [2]
cdewayne calls [2]
anthony104 calls [2]
corobi14 calls [2]
cami999 calls [2]
** Dealing flop ** [ 7h, 9s, Tc ]
seba5233 bets [6]
pardies14 calls [6]
punoperu raises [12]
cdewayne calls [12]
anthony104 folds
corobi14 calls [12]
cami999 folds
seba5233 calls [6]
pardies14 calls [6]
** Dealing turn ** [ 7c ]
seba5233 checks
pardies14 checks
punoperu checks
cdewayne checks
corobi14 bets [66]
seba5233 folds
pardies14 calls [66]
punoperu folds
cdewayne calls [66]
** Dealing river ** [ Kc ]
pardies14 checks
cdewayne checks
corobi14 bets [143]
pardies14 calls [143]
cdewayne calls [104]
** Summary **
corobi14 shows [ As, 7s ]
pardies14 mucks [ Js, Jc ]
cdewayne mucks [ Qc, Ks ]
corobi14 collected [ 595 ]
corobi14 collected [ 78 ]
#Game No : 360045402
***** Cassava Hand History for Game 360045402 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:02:49
Table Alagoinhas (Practice Play)
Seat 5 is the button
Total number of players : 8
Seat 1: corobi14 ( 1,784.60 )
Seat 2: micuccim ( 153 )
Seat 3: cami999 ( 200 )
Seat 4: Borr_09 ( 192 )
Seat 5: seba5233 ( 219.60 )
Seat 7: pardies14 ( 488.60 )
Seat 8: punoperu ( 184 )
Seat 10: anthony104 ( 194 )
pardies14 posts small blind [1]
punoperu posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ Jh, 2h ]
anthony104 calls [2]
corobi14 calls [2]
micuccim calls [2]
cami999 calls [2]
Borr_09 calls [2]
seba5233 calls [2]
pardies14 calls [1]
punoperu checks
** Dealing flop ** [ 8c, 9s, Kh ]
pardies14 checks
punoperu bets [8]
anthony104 calls [8]
corobi14 folds
micuccim calls [8]
cami999 calls [8]
Borr_09 folds
seba5233 calls [8]
pardies14 folds
** Dealing turn ** [ 5h ]
punoperu checks
anthony104 checks
micuccim checks
cami999 checks
seba5233 checks
** Dealing river ** [ Js ]
punoperu checks
anthony104 checks
micuccim bets [56]
cami999 folds
seba5233 folds
punoperu folds
anthony104 folds
** Summary **
micuccim collected [ 53.20 ]
#Game No : 360045515
***** Cassava Hand History for Game 360045515 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:04:10
Table Alagoinhas (Practice Play)
Seat 7 is the button
Total number of players : 7
Seat 1: corobi14 ( 1,782.60 )
Seat 2: micuccim ( 196.20 )
Seat 4: Borr_09 ( 190 )
Seat 5: seba5233 ( 209.60 )
Seat 7: pardies14 ( 486.60 )
Seat 8: punoperu ( 174 )
Seat 10: anthony104 ( 184 )
punoperu posts small blind [1]
anthony104 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ Jd, 5d ]
corobi14 calls [2]
micuccim calls [2]
Borr_09 calls [2]
seba5233 calls [2]
pardies14 calls [2]
punoperu calls [1]
anthony104 checks
** Dealing flop ** [ 5s, Qh, 9d ]
punoperu checks
anthony104 checks
corobi14 checks
micuccim checks
Borr_09 bets [14]
seba5233 folds
pardies14 folds
punoperu folds
anthony104 folds
corobi14 folds
micuccim calls [14]
** Dealing turn ** [ Td ]
micuccim checks
Borr_09 bets [40]
micuccim folds
** Summary **
Borr_09 collected [ 39.90 ]
#Game No : 360045627
***** Cassava Hand History for Game 360045627 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:05:13
Table Alagoinhas (Practice Play)
Seat 10 is the button
Total number of players : 7
Seat 1: corobi14 ( 1,780.60 )
Seat 2: micuccim ( 180.20 )
Seat 4: Borr_09 ( 213.90 )
Seat 5: seba5233 ( 207.60 )
Seat 7: pardies14 ( 484.60 )
Seat 9: cdewayne ( 200 )
Seat 10: anthony104 ( 182 )
corobi14 posts small blind [1]
micuccim posts big blind [2]
cdewayne posts dead blind [1 + 2]
** Dealing down cards **
Dealt to Borr_09 [ 2s, 2d ]
Borr_09 raises [4]
seba5233 calls [4]
pardies14 calls [4]
cdewayne calls [2]
anthony104 calls [4]
corobi14 calls [3]
micuccim calls [2]
** Dealing flop ** [ Ks, 9c, 8d ]
corobi14 checks
micuccim checks
Borr_09 checks
seba5233 checks
pardies14 checks
cdewayne checks
anthony104 checks
** Dealing turn ** [ 2c ]
corobi14 checks
micuccim checks
Borr_09 bets [20]
seba5233 calls [20]
pardies14 calls [20]
cdewayne folds
anthony104 calls [20]
corobi14 folds
micuccim raises [149]
Borr_09 calls [129]
seba5233 calls [129]
pardies14 calls [129]
anthony104 calls [129]
** Dealing river ** [ Ad ]
micuccim checks
Borr_09 bets [60.90]
seba5233 folds
pardies14 calls [60.90]
anthony104 folds
micuccim folds
** Summary **
Borr_09 shows [ 2s, 2d ]
pardies14 shows [ 8c, 9d ]
Borr_09 collected [ 892.80 ]
#Game No : 360045794
***** Cassava Hand History for Game 360045794 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:07:18
Table Alagoinhas (Practice Play)
Seat 1 is the button
Total number of players : 8
Seat 1: corobi14 ( 1,776.60 )
Seat 2: micuccim ( 27.20 )
Seat 4: Borr_09 ( 892.80 )
Seat 5: seba5233 ( 54.60 )
Seat 7: pardies14 ( 270.70 )
Seat 8: rudie214 ( 200 )
Seat 9: cdewayne ( 195 )
Seat 10: anthony104 ( 200 )
micuccim posts small blind [1]
Borr_09 posts big blind [2]
rudie214 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ Jh, Ts ]
seba5233 folds
pardies14 calls [2]
rudie214 checks
cdewayne calls [2]
anthony104 calls [2]
corobi14 folds
micuccim raises [13]
Borr_09 calls [12]
pardies14 calls [12]
rudie214 folds
cdewayne calls [12]
anthony104 calls [12]
** Dealing flop ** [ 3s, Jd, 8h ]
micuccim bets [13.20]
Borr_09 calls [13.20]
pardies14 calls [13.20]
cdewayne calls [13.20]
anthony104 calls [13.20]
** Dealing turn ** [ 8s ]
Borr_09 checks
pardies14 checks
cdewayne checks
anthony104 checks
** Dealing river ** [ 2h ]
Borr_09 checks
pardies14 checks
cdewayne checks
anthony104 checks
** Summary **
Borr_09 shows [ Jh, Ts ]
pardies14 mucks [ Td, 4c ]
cdewayne mucks [ 9d, 7s ]
anthony104 mucks [ Qh, Ah ]
micuccim mucks [ 3d, Kd ]
Borr_09 collected [ 135 ]
#Game No : 360045891
***** Cassava Hand History for Game 360045891 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:08:29
Table Alagoinhas (Practice Play)
Seat 4 is the button
Total number of players : 6
Seat 1: corobi14 ( 1,776.60 )
Seat 4: Borr_09 ( 1,000.60 )
Seat 5: seba5233 ( 54.60 )
Seat 7: pardies14 ( 243.50 )
Seat 9: cdewayne ( 167.80 )
Seat 10: anthony104 ( 172.80 )
seba5233 posts small blind [1]
pardies14 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ 5s, Ad ]
cdewayne calls [2]
anthony104 calls [2]
corobi14 calls [2]
Borr_09 calls [2]
seba5233 raises [6.50]
pardies14 calls [5.50]
cdewayne calls [5.50]
anthony104 calls [5.50]
corobi14 folds
Borr_09 calls [5.50]
** Dealing flop ** [ 2h, Ac, 8d ]
seba5233 bets [19.75]
pardies14 folds
cdewayne folds
anthony104 folds
Borr_09 raises [39.50]
seba5233 calls [19.75]
** Dealing turn ** [ 9s ]
seba5233 checks
Borr_09 bets [50]
seba5233 calls [7.60]
** Dealing river ** [ 6c ]
** Summary **
Borr_09 shows [ 5s, Ad ]
seba5233 shows [ 3c, 3h ]
Borr_09 collected [ 130.70 ]
#Game No : 360046048
***** Cassava Hand History for Game 360046048 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:09:58
Table Alagoinhas (Practice Play)
Seat 7 is the button
Total number of players : 6
Seat 1: corobi14 ( 1,774.60 )
Seat 3: silviogl ( 200 )
Seat 4: Borr_09 ( 1,076.70 )
Seat 7: pardies14 ( 236 )
Seat 9: cdewayne ( 160.30 )
Seat 10: anthony104 ( 165.30 )
cdewayne posts small blind [1]
anthony104 posts big blind [2]
silviogl folds
** Dealing down cards **
Dealt to Borr_09 [ Qd, 3c ]
corobi14 calls [2]
Borr_09 calls [2]
pardies14 calls [2]
cdewayne calls [1]
anthony104 checks
** Dealing flop ** [ 4d, Jd, Td ]
cdewayne checks
anthony104 checks
corobi14 checks
Borr_09 checks
pardies14 checks
** Dealing turn ** [ 9s ]
cdewayne checks
anthony104 checks
corobi14 checks
Borr_09 checks
pardies14 checks
** Dealing river ** [ 9c ]
cdewayne checks
anthony104 bets [10]
corobi14 calls [10]
Borr_09 folds
pardies14 folds
cdewayne folds
** Summary **
anthony104 shows [ 9h, Ah ]
corobi14 mucks [ Ts, Qh ]
anthony104 collected [ 28.50 ]
#Game No : 360046146
***** Cassava Hand History for Game 360046146 *****
1/2 Blinds Pot Limit Holdem - *** 03 02 2011 20:11:03
Table Alagoinhas (Practice Play)
Seat 9 is the button
Total number of players : 5
Seat 1: corobi14 ( 1,762.60 )
Seat 4: Borr_09 ( 1,074.70 )
Seat 8: bigboppa74 ( 200 )
Seat 9: cdewayne ( 158.30 )
Seat 10: anthony104 ( 200 )
anthony104 posts small blind [1]
corobi14 posts big blind [2]
bigboppa74 posts big blind [2]
** Dealing down cards **
Dealt to Borr_09 [ Jh, Jd ]
Borr_09 calls [2]
bigboppa74 checks
cdewayne calls [2]
anthony104 calls [1]
corobi14 checks
** Dealing flop ** [ 2c, 2d, Kd ]
anthony104 checks
corobi14 checks
Borr_09 bets [10]
bigboppa74 calls [10]
cdewayne folds
anthony104 folds
corobi14 folds
** Dealing turn ** [ 2h ]
Borr_09 bets [30]
bigboppa74 calls [30]
** Dealing river ** [ 6s ]
Borr_09 bets [90]
bigboppa74 raises [158]
Borr_09 calls [68]
** Summary **
Borr_09 shows [ Jh, Jd ]
bigboppa74 shows [ 6c, 8d ]
Borr_09 collected [ 404 ]

View File

@ -24,9 +24,6 @@ Test if gtk is working.
import sys
import os
import Configuration
config_path = Configuration.get_default_config_path()
try:
import gobject as _gobject
@ -70,7 +67,7 @@ try:
(gtk.STOCK_CLOSE, gtk.RESPONSE_OK))
dia.set_default_size(500, 300)
l = gtk.Label("GTK is working!\nConfig location: %s" %config_path)
l = gtk.Label("GTK is working!\n")
dia.vbox.add(l)
l.show()