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: These are as of 27Feb2011:
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/
Required:
The below are from Aug2010, and should probably be updated to newer versions:
Python 2.7 ... http://python.org/ftp/python/2.7/python-2.7.msi 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 gtk+ allinone... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.22/gtk+-bundle_2.22.1-20101227_win32.zip
py2exe 0.6.9 ... https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download matplotlib 1.0.1 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.0.1/matplotlib-1.0.1.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 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: #TODO:
# get rid of all the uneeded libraries (e.g., pyQT)
# think about an installer # 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: #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 #- cd to the folder where this script is stored, usually ...packaging/windows
#- Run the script with python "py2exe_setup.py py2exe" #- Run the script with python "py2exe_setup.py py2exe"
#- You will frequently get messages about missing .dll files.just assume other #- You will frequently get messages about missing .dll files.just assume other
# person will have them? we have copyright issues including some dll's # 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 # 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 # 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 # 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 # Gimick: restructure to allow script to run from packaging/windows directory, and not to write to source pyfpdb
fpdbver = '0.22'
import os import os
import sys import sys
@ -61,12 +54,16 @@ except:
print "A parameter is required, quitting now" print "A parameter is required, quitting now"
quit() quit()
if sys.argv[1] <> "py2exe":
print "Parameter 1 is not valid, quitting now"
quit()
from distutils.core import setup from distutils.core import setup
import py2exe import py2exe
import glob import glob
import matplotlib import matplotlib
import shutil import shutil
#from datetime import date import cdecimal
def isSystemDLL(pathname): def isSystemDLL(pathname):
#dwmapi appears to be vista-specific file, not XP #dwmapi appears to be vista-specific file, not XP
@ -75,12 +72,15 @@ def isSystemDLL(pathname):
return origIsSystemDLL(pathname) return origIsSystemDLL(pathname)
def test_and_remove(top): def test_and_remove(top):
#print "Attempting to delete:", top
if os.path.exists(top): if os.path.exists(top):
if os.path.isdir(top): if os.path.isdir(top):
remove_tree(top) remove_tree(top)
else: else:
print "Unexpected file '"+top+"' found. Exiting." print "Unexpected file '"+top+"' found. Exiting."
exit() exit()
else:
"oops folder not found"
def remove_tree(top): def remove_tree(top):
# Delete everything reachable from the directory named in 'top', # Delete everything reachable from the directory named in 'top',
@ -89,8 +89,8 @@ def remove_tree(top):
# could delete all your disk files. # could delete all your disk files.
# sc: Nicked this from somewhere, added the if statement to try # sc: Nicked this from somewhere, added the if statement to try
# make it a bit safer # make it a bit safer
if top in ('build','dist',distdir) and os.path.basename(os.getcwd()) == 'windows': if (top in ('build','dist') or top.startswith(distdir)) and os.path.basename(os.getcwd()) == 'windows':
#print "removing directory '"+top+"' ..." print "removing directory '"+top+"' ..."
for root, dirs, files in os.walk(top, topdown=False): for root, dirs, files in os.walk(top, topdown=False):
for name in files: for name in files:
os.remove(os.path.join(root, name)) os.remove(os.path.join(root, name))
@ -111,8 +111,6 @@ def copy_file(source,destination):
shutil.copy( source, destination ) shutil.copy( source, destination )
fpdbver = '0.21.rc1'
distdir = r'fpdb-' + fpdbver distdir = r'fpdb-' + fpdbver
rootdir = r'../../' #cwd is normally /packaging/windows rootdir = r'../../' #cwd is normally /packaging/windows
pydir = rootdir+'pyfpdb/' pydir = rootdir+'pyfpdb/'
@ -172,20 +170,17 @@ setup(
] + matplotlib.get_py2exe_datafiles() ] + matplotlib.get_py2exe_datafiles()
) )
# ,(distdir, [rootdir+'run_fpdb.bat'])
# ,(distdir+r'\gfx', glob.glob(gfxdir+'*.*'))
# ] +
print "*** py2exe build phase complete ***" print "*** py2exe build phase complete ***"
# copy zone info and fpdb translation folders # 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')) copy_tree (pydir+r'locale', os.path.join(r'dist', 'locale'))
# create distribution folder and populate with gfx + bat # create distribution folder and populate with gfx + bat
copy_tree (gfxdir, os.path.join(distdir, 'gfx')) copy_tree (gfxdir, os.path.join(distdir, 'gfx'))
copy_file (rootdir+'run_fpdb.bat', distdir) 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') dest = os.path.join(distdir, 'pyfpdb')
os.rename( 'dist', dest ) 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, 'lib'), os.path.join(dest, 'lib'))
copy_tree(os.path.join(gtk_dir, 'share'), os.path.join(dest, 'share')) 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') 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 print "*** deleting folders to shrink package size ***"
pyfpdb/lib/gtk-2.0/include test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'glib-2.0'))
pyfpdb/lib/pkgconfig test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'gtk-2.0','include'))
pyfpdb/share/aclocal test_and_remove(os.path.join(distdir, 'pyfpdb', 'lib', 'pkgconfig'))
pyfpdb/share/doc test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'aclocal'))
pyfpdb/share/glib-2.0 test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'doc'))
pyfpdb/share/gtk-2.0 test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'glib-2.0'))
pyfpdb/share/gtk-doc test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-2.0'))
pyfpdb/share/locale test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'gtk-doc'))
pyfpdb/share/man test_and_remove(os.path.join(distdir, 'pyfpdb', 'share', 'locale'))
pyfpdb/share/themes/Default 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 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 This walkthrough is derived with the assistance of EricBlade and the build notes
supplied by Loic Dachary <loic@dachary.org> http://dachary.org/ 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 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) has the same dependency (msvcr90.dll version 9.0.21022.8)
Using winXPhome 32 bit 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 ... 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 3. Source install
----------------- -----------------
@ -62,11 +63,29 @@ change this:
to be this: to be this:
#define VERSION_NAME(W) W##2_6 #define VERSION_NAME(W) W##2_7
#define PYTHON_VERSION "2_6" #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.2/ save and exit
- - - - -
4.3/ dos> write c:/pypoker-eval/pokereval.py 4.3/ dos> write c:/pypoker-eval/pokereval.py
Comment-out this line: Comment-out this line:
@ -75,7 +94,7 @@ _pokereval = __import__('_pokereval_' + sys.version[0] + '_' + sys.version[2])
Insert this one in its' place: Insert this one in its' place:
import _pokereval_2_6 as _pokereval import _pokereval_2_7 as _pokereval
4.4/ save and exit 4.4/ save and exit
@ -112,7 +131,7 @@ import _pokereval_2_6 as _pokereval
6.2.5 In the pythonpoker-eval properties dialog, 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/ = C/C++/Additional Include Directories/
= linker/general/Additional library directories = linker/general/Additional library directories
@ -121,7 +140,6 @@ change references to "python24" to "python26" in the following:
Change the following Change the following
= linker/generate debug info - set to No = 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 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 8.4 Exit from visual studio
9. packaging 9. Wrap-up
------------ ----------
9.1 Navigate to c:/pypoker-eval/release 9.1 Navigate to c:/pypoker-eval/release
9.2 the output file is pypokereval.dll 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 : 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 test.py from pypoker-eval-138.0
pokereval.py from pypoker-eval-138.0 pokereval.py from pypoker-eval-138.0
poker-eval.vcproj from c:\poker-eval poker-eval.vcproj from c:\poker-eval
pypoker-eval.vcproj from c:\pypoker-eval pypoker-eval.vcproj from c:\pypoker-eval
pypokereval.c 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.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.4 hand-output should scroll down the screen
10.5 start the python interpreter 10.5 start the python interpreter
10.6 >>> import pokereval 10.6 >>> import pokereval
10.7 No errors should be seen 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 or fname_info is None:
if m is None: if m is None:
tmp = hand.handText[0:100] tmp = hand.handText[0:100]
logging.error(_("Didn't match re_HandInfo: '%s'") % tmp) logging.error(_("No match in readHandInfo: '%s'") % tmp)
raise FpdbParseError("Absolute: " + _("Didn't match re_HandInfo: '%s'") % tmp) raise FpdbParseError("Absolute: " + _("No match in readHandInfo: '%s'") % tmp)
elif fname_info is None: 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) logging.error(_("File name: %s") % self.in_path)
raise FpdbParseError("Absolute: " + _("Didn't match re_*InfoFromFilename: '%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(',', '') bet = action.group('BET').replace(',', '')
hand.addComplete( street, action.group('PNAME'), bet) hand.addComplete( street, action.group('PNAME'), bet)
else: 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): def readShowdownActions(self, hand):

View File

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

View File

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

View File

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

View File

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

View File

@ -55,6 +55,9 @@ log = logging.getLogger("config")
def get_default_config_path(): def get_default_config_path():
"""Returns the path where the fpdb config file _should_ be stored.""" """Returns the path where the fpdb config file _should_ be stored."""
if os.name == 'posix': if os.name == 'posix':
if (os.uname()[0]=="Darwin"):
config_path = os.path.join(os.getenv("HOME"), ".fpdb")
else:
config_path = os.path.join(os.path.expanduser("~"), '.fpdb') config_path = os.path.join(os.path.expanduser("~"), '.fpdb')
elif os.name == 'nt': elif os.name == 'nt':
config_path = os.path.join(unicode(os.environ[u"APPDATA"], "latin-1"), u"fpdb") config_path = os.path.join(unicode(os.environ[u"APPDATA"], "latin-1"), u"fpdb")
@ -75,7 +78,6 @@ def get_exec_path():
def get_config(file_name, fallback = True): def get_config(file_name, fallback = True):
"""Looks in cwd and in self.default_config_path for a config file.""" """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 # look for example file even if not used here, path is returned to caller
config_found,example_found,example_copy = False,False,False config_found,example_found,example_copy = False,False,False
config_path, example_path = None,None config_path, example_path = None,None
@ -108,6 +110,13 @@ def get_config(file_name, fallback = True):
example_copy = True example_copy = True
msg = _("Config file has been created at %s.\n") % config_path msg = _("Config file has been created at %s.\n") % config_path
logging.info(msg) logging.info(msg)
except IOError:
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: except IOError:
pass pass
@ -482,7 +491,6 @@ class Import:
self.node = node self.node = node
self.interval = node.getAttribute("interval") self.interval = node.getAttribute("interval")
self.callFpdbHud = node.getAttribute("callFpdbHud") self.callFpdbHud = node.getAttribute("callFpdbHud")
self.hhArchiveBase = node.getAttribute("hhArchiveBase")
self.ResultsDirectory = node.getAttribute("ResultsDirectory") self.ResultsDirectory = node.getAttribute("ResultsDirectory")
self.hhBulkPath = node.getAttribute("hhBulkPath") self.hhBulkPath = node.getAttribute("hhBulkPath")
self.saveActions = string_to_bool(node.getAttribute("saveActions"), default=False) 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) self.saveStarsHH = string_to_bool(node.getAttribute("saveStarsHH"), default=False)
def __str__(self): def __str__(self):
return " interval = %s\n callFpdbHud = %s\n hhArchiveBase = %s\n saveActions = %s\n fastStoreHudCache = %s\nResultsDirectory = %s" \ return " interval = %s\n callFpdbHud = %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) % (self.interval, self.callFpdbHud, self.saveActions, self.cacheSessions, self.sessionTimeout, self.fastStoreHudCache, self.ResultsDirectory)
class HudUI: class HudUI:
def __init__(self, node): def __init__(self, node):
@ -712,7 +720,7 @@ class Config:
while added > 0 and n < 2: while added > 0 and n < 2:
n = n + 1 n = n + 1
log.info(_("Reading configuration file %s") % file) log.info(_("Reading configuration file %s") % file)
print _("\nReading configuration file %s\n") % file print (("\n"+_("Reading configuration file %s")+"\n") % file)
try: try:
doc = xml.dom.minidom.parse(file) doc = xml.dom.minidom.parse(file)
self.doc = doc self.doc = doc
@ -858,9 +866,6 @@ class Config:
return nodes_added return nodes_added
def set_hhArchiveBase(self, path):
self.imp.node.setAttribute("hhArchiveBase", path)
def find_default_conf(self): def find_default_conf(self):
if os.name == 'posix': if os.name == 'posix':
config_path = os.path.join(os.path.expanduser("~"), '.fpdb', 'default.conf') config_path = os.path.join(os.path.expanduser("~"), '.fpdb', 'default.conf')
@ -1258,10 +1263,6 @@ class Config:
try: imp['interval'] = self.imp.interval try: imp['interval'] = self.imp.interval
except: imp['interval'] = 10 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 # ResultsDirectory is the local cache for downloaded results
# NOTE: try: except: doesn'tseem to be triggering # NOTE: try: except: doesn'tseem to be triggering
# using if instead # 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 ('Betfair', 'BF')")
c.execute("INSERT INTO Sites (name,code) VALUES ('Absolute', 'AB')") 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 ('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 ('Partouche', 'PA')")
c.execute("INSERT INTO Sites (name,code) VALUES ('Carbon', 'CA')") c.execute("INSERT INTO Sites (name,code) VALUES ('Carbon', 'CA')")
c.execute("INSERT INTO Sites (name,code) VALUES ('PKR', 'PK')") c.execute("INSERT INTO Sites (name,code) VALUES ('PKR', 'PK')")
@ -2054,6 +2055,14 @@ class Database:
cursor = self.get_cursor() cursor = self.get_cursor()
for row in inserts: 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: # Try to do the update first:
num = cursor.execute(update_hudcache, row) num = cursor.execute(update_hudcache, row)
#print "DEBUG: values: %s" % row[-6:] #print "DEBUG: values: %s" % row[-6:]

View File

@ -142,9 +142,9 @@ class Everest(HandHistoryConverter):
def readHandInfo(self, hand): def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText) m = self.re_HandInfo.search(hand.handText)
if m is None: 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) 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.handid = m.group('HID')
hand.tablename = self.info['TABLENAME'] hand.tablename = self.info['TABLENAME']
hand.maxseats = None hand.maxseats = None
@ -231,9 +231,8 @@ class Everest(HandHistoryConverter):
elif action.group('ATYPE') in ('FOLD', 'SIT_OUT'): elif action.group('ATYPE') in ('FOLD', 'SIT_OUT'):
hand.addFold(street, player) hand.addFold(street, player)
else: else:
print (_("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") logging.debug(_("Unimplemented readAction: '%s' '%s'") % (action.group('PSEAT'),action.group('ATYPE')))
% (action.group('PSEAT'),action.group('ATYPE')))
def readShowdownActions(self, hand): def readShowdownActions(self, hand):
for shows in self.re_ShowdownAction.finditer(hand.handText): 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): def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText) m = self.re_HandInfo.search(hand.handText)
if(m == None): 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) logging.info(hand.handText)
return None return None
logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) 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 # text used on screen stored here so that it can be configured
self.filterText = {'limitsall':_('All'), 'limitsnone':_('None'), 'limitsshow':_('Show _Limits') self.filterText = {'limitsall':_('All'), 'limitsnone':_('None'), 'limitsshow':_('Show _Limits')
,'seatsbetween':_('Between:'), 'seatsand':_('And:'), 'seatsshow':_('Show Number of _Players') ,'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:') ,'limitstitle':_('Limits:'), 'seatstitle':_('Number of Players:')
,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats') ,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats')
,'datestitle':_('Date:') ,'datestitle':_('Date:')

View File

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

View File

@ -232,6 +232,7 @@ class GuiAutoImport (threading.Thread):
# That is not correct. It should open another dir for importing while piping the # 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 # results to the same pipe. This means that self.path should be a a list of dirs
# to watch. # to watch.
if data == "autostart" or (widget == self.startButton and self.startButton.get_active()): if data == "autostart" or (widget == self.startButton and self.startButton.get_active()):
self.startButton.set_active(True) self.startButton.set_active(True)
# - Does the lock acquisition need to be more sophisticated for multiple dirs? # - 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): def run(self):
response = super(AddDB,self).run() 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 ok,retry = False,True
while response == gtk.RESPONSE_ACCEPT: while response == gtk.RESPONSE_ACCEPT:

View File

@ -46,10 +46,8 @@ try:
from numpy import arange, cumsum from numpy import arange, cumsum
from pylab import * from pylab import *
except ImportError, inst: except ImportError, inst:
print _("""Failed to load libs for graphing, graphing will not function. Please print _("""Failed to load libs for graphing, graphing will not function. Please install numpy and matplotlib if you want to use graphs.""")
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 _("""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 print "ImportError: %s" % inst.args
class GuiGraphViewer (threading.Thread): class GuiGraphViewer (threading.Thread):

View File

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

View File

@ -46,10 +46,8 @@ try:
from numpy import arange, cumsum from numpy import arange, cumsum
from pylab import * from pylab import *
except ImportError, inst: except ImportError, inst:
print _("""Failed to load libs for graphing, graphing will not function. Please print _("""Failed to load libs for graphing, graphing will not function. Please install numpy and matplotlib if you want to use graphs.""")
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 _("""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 print "ImportError: %s" % inst.args
class GuiTourneyGraphViewer (threading.Thread): class GuiTourneyGraphViewer (threading.Thread):

View File

@ -2,7 +2,7 @@
<FreePokerToolsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FreePokerToolsConfig.xsd"> <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 <!-- These values determine what stats are displayed in the HUD
@ -389,6 +389,49 @@ Left-Drag to Move"
</layout> </layout>
</site> </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 enabled="True"
site_name="Betfair" site_name="Betfair"
@ -754,6 +797,7 @@ Left-Drag to Move"
<hhc site="Win2day" converter="Win2dayToFpdb"/> <hhc site="Win2day" converter="Win2dayToFpdb"/>
<hhc site="Absolute" converter="AbsoluteToFpdb"/> <hhc site="Absolute" converter="AbsoluteToFpdb"/>
<hhc site="PartyPoker" converter="PartyPokerToFpdb"/> <hhc site="PartyPoker" converter="PartyPokerToFpdb"/>
<hhc site="PacificPoker" converter="PacificPokerToFpdb"/>
<hhc site="Betfair" converter="BetfairToFpdb"/> <hhc site="Betfair" converter="BetfairToFpdb"/>
<hhc site="OnGame" converter="OnGameToFpdb"/> <hhc site="OnGame" converter="OnGameToFpdb"/>
<hhc site="Carbon" converter="CarbonToFpdb"/> <hhc site="Carbon" converter="CarbonToFpdb"/>

View File

@ -12,7 +12,7 @@
config_difficulty="expert" 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> <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" /> <col col_name="game" disp_all="True" disp_posn="True" col_title="Game" xalignment="0.0" field_format="%s" field_type="str" />

View File

@ -86,6 +86,17 @@ class HUD_main(object):
# a main window # a main window
self.main_window = gtk.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: if options.minimized:
self.main_window.iconify() self.main_window.iconify()
if options.hidden: if options.hidden:
@ -141,7 +152,7 @@ class HUD_main(object):
self.kill_hud(None, hud.table.key) self.kill_hud(None, hud.table.key)
def destroy(self, *args): # call back for terminating the main eventloop def destroy(self, *args): # call back for terminating the main eventloop
log.info(_("Terminating normally.")) log.info(_("Quitting normally"))
gtk.main_quit() gtk.main_quit()
def kill_hud(self, event, table): def kill_hud(self, event, table):

View File

@ -47,7 +47,7 @@ class Hand(object):
# Class Variables # Class Variables
UPS = {'a':'A', 't':'T', 'j':'J', 'q':'Q', 'k':'K', 'S':'s', 'C':'c', 'H':'h', 'D':'d'} 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'} 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'} 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, 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} '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): def sanityCheck(self):
"""Check we aren't going to do some stupid things""" """Check we aren't going to do some stupid things"""
#TODO: the hhbase stuff needs to be in fpdb_import
sane = False sane = False
base_w = 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 # Make sure input and output files are different or we'll overwrite the source file
if True: # basically.. I don't know if True: # basically.. I don't know

View File

@ -334,7 +334,7 @@ class OnGame(HandHistoryConverter):
elif action.group('ATYPE') == ' stands pat': elif action.group('ATYPE') == ' stands pat':
hand.addStandsPat( street, action.group('PNAME')) hand.addStandsPat( street, action.group('PNAME'))
else: 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): def readShowdownActions(self, hand):
for shows in self.re_ShowdownAction.finditer(hand.handText): 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""" """Function for converting various site aliases to the FPDB name"""
tmp = alias tmp = alias
aliases = { aliases = {
"PacificPoker" : "PacificPoker",
"PokerStars" : "PokerStars", "PokerStars" : "PokerStars",
"Full Tilt Poker": "Full Tilt Poker", "Full Tilt Poker": "Full Tilt Poker",
"PartyPoker" : "PartyPoker", "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: elif info[key].find(u"")!=-1:
hand.buyinCurrency="EUR" hand.buyinCurrency="EUR"
else: 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'$€') info[key] = info[key].strip(u'$€')
hand.buyin = int(100*Decimal(info[key])) hand.buyin = int(100*Decimal(info[key]))
if key == 'LEVEL': if key == 'LEVEL':

View File

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

View File

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

View File

@ -172,6 +172,8 @@ def compare(leaf, importer, errors, site):
# Test if this is a hand history file # Test if this is a hand history file
if filename.endswith('.txt'): if filename.endswith('.txt'):
# test if there is a .hp version of the file # test if there is a .hp version of the file
print "Site: %s" % site
print "Filename: %s" % filename
importer.addBulkImportImportFileOrDir(filename, site=site) importer.addBulkImportImportFileOrDir(filename, site=site)
(stored, dups, partial, errs, ttime) = importer.runImport() (stored, dups, partial, errs, ttime) = importer.runImport()
@ -213,7 +215,7 @@ def usage():
print "Run tests for a sinlge site:" print "Run tests for a sinlge site:"
print "\t./TestHandsPlayers -s <Sitename>" print "\t./TestHandsPlayers -s <Sitename>"
print "Run tests for a sinlge file in a site:" 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) sys.exit(0)
def main(argv=None): def main(argv=None):
@ -255,6 +257,7 @@ def main(argv=None):
importer.setCallHud(False) importer.setCallHud(False)
importer.setFakeCacheHHC(True) importer.setFakeCacheHHC(True)
PacificPokerErrors= FpdbError('PacificPoker')
PokerStarsErrors = FpdbError('PokerStars') PokerStarsErrors = FpdbError('PokerStars')
FTPErrors = FpdbError('Full Tilt Poker') FTPErrors = FpdbError('Full Tilt Poker')
PartyPokerErrors = FpdbError('Party Poker') PartyPokerErrors = FpdbError('Party Poker')
@ -271,7 +274,7 @@ def main(argv=None):
WinamaxErrors = FpdbError('Winamax') WinamaxErrors = FpdbError('Winamax')
ErrorsList = [ ErrorsList = [
PokerStarsErrors, FTPErrors, PartyPokerErrors, PacificPokerErrors, PokerStarsErrors, FTPErrors, PartyPokerErrors,
BetfairErrors, OnGameErrors, AbsoluteErrors, BetfairErrors, OnGameErrors, AbsoluteErrors,
EverleafErrors, CarbonErrors, PKRErrors, EverleafErrors, CarbonErrors, PKRErrors,
iPokerErrors, WinamaxErrors, UltimateBetErrors, iPokerErrors, WinamaxErrors, UltimateBetErrors,
@ -279,6 +282,7 @@ def main(argv=None):
] ]
sites = { sites = {
'PacificPoker' : False,
'PokerStars' : False, 'PokerStars' : False,
'Full Tilt Poker' : False, 'Full Tilt Poker' : False,
'PartyPoker' : False, 'PartyPoker' : False,
@ -301,6 +305,11 @@ def main(argv=None):
else: else:
sites[options.sitename] = True 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: 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/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars")
walk_testfiles("regression-test-files/tour/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" sitename = "Win2day"
filetype = "text" filetype = "text"
codepage = "cp1252" codepage = "utf-8"
siteID = 4 siteID = 4
# Static regexes # 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="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]+">$' #'^<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_SplitHands = re.compile('</HISTORY>')
re_HandInfo = re.compile("^Table \'(?P<TABLE>[- a-zA-Z]+)\'(?P<TABLEATTRIBUTES>.+?$)?", re.MULTILINE) 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) 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) m = self.re_GameInfo.search(handText)
if not m: if not m:
tmp = handText[0:100] tmp = handText[0:1000]
log.error(_("Unable to recognise gametype from: '%s'") % tmp) log.error(_("Unable to recognise gametype from: '%s'") % tmp)
log.error(_("determineGameType: Raising FpdbParseError")) log.error(_("determineGameType: Raising FpdbParseError"))
raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp)

View File

@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Routines for detecting and handling poker client windows for MS Windows. """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 # 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 # 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 re.search(self.search_string, titles[hwnd], re.I):
if self.check_bad_words(titles[hwnd]): if self.check_bad_words(titles[hwnd]):
continue 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 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 continue
HasNoOwner = win32gui.GetWindow(hwnd, win32con.GW_OWNER) == 0 HasNoOwner = win32gui.GetWindow(hwnd, win32con.GW_OWNER) == 0
WindowStyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE) WindowStyle = win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)

View File

@ -260,7 +260,7 @@ class Winamax(HandHistoryConverter):
hand.buyinCurrency="PSFP" hand.buyinCurrency="PSFP"
else: else:
#FIXME: handle other currencies (are there other currencies?) #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') info['BIAMT'] = info['BIAMT'].strip(u'$€FPP')

View File

@ -38,9 +38,9 @@ if os.name == 'nt' and sys.version[0:3] not in ('2.5', '2.6', '2.7') and '-r' no
print "Python " + sys.version[0:3] + _(' - press return to continue\n') print "Python " + sys.version[0:3] + _(' - press return to continue\n')
sys.stdin.readline() sys.stdin.readline()
if os.name == 'nt': if os.name == 'nt':
os.execvpe('pythonw.exe', ('pythonw.exe', 'fpdb.pyw', '-r'), os.environ) # first arg is ignored (name of program being run) os.execvpe('pythonw.exe', ('pythonw.exe', 'fpdb.pyw', '-r'), os.environ)
else: 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: else:
print _("\npython 2.5-2.7 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n") 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.")) raw_input(_("Press ENTER to continue."))
@ -67,7 +67,8 @@ import string
cl_options = string.join(sys.argv[1:]) cl_options = string.join(sys.argv[1:])
(options, argv) = Options.fpdb_options() (options, argv) = Options.fpdb_options()
import logging, logging.config import logging
import logging.config
log = logging.getLogger("fpdb") log = logging.getLogger("fpdb")
try: try:
@ -126,7 +127,7 @@ import Configuration
import Exceptions import Exceptions
import Stats import Stats
VERSION = "0.21 plus git" VERSION = "0.22 plus git"
class fpdb: class fpdb:
@ -187,6 +188,21 @@ class fpdb:
tabBox.pack_start(tabLabel, False) tabBox.pack_start(tabLabel, False)
eventBox.add(tabBox) 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: if nb.get_n_pages() > 0:
tabButton = gtk.Button() tabButton = gtk.Button()
@ -205,9 +221,9 @@ class fpdb:
image = gtk.Image() image = gtk.Image()
image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_SMALL_TOOLBAR) image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_SMALL_TOOLBAR)
gtk.Button.set_relief(button, gtk.RELIEF_NONE) gtk.Button.set_relief(button, gtk.RELIEF_NONE)
settings = gtk.Widget.get_settings(button); settings = gtk.Widget.get_settings(button)
(w,h) = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_SMALL_TOOLBAR); (w, h) = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_SMALL_TOOLBAR)
gtk.Widget.set_size_request(button, w + 4, h + 4); gtk.Widget.set_size_request(button, w + 4, h + 4)
image.show() image.show()
iconBox.pack_start(image, True, False, 0) iconBox.pack_start(image, True, False, 0)
button.add(iconBox) button.add(iconBox)
@ -253,15 +269,15 @@ class fpdb:
db_version = "" db_version = ""
#if self.db is not None: #if self.db is not None:
# db_version = self.db.get_version() # db_version = self.db.get_version()
nums = [ (_('Operating System'), os.name) nums = [(_('Operating System'), os.name),
, ('Python', sys.version[0:3]) ('Python', sys.version[0:3]),
, ('GTK+', '.'.join([str(x) for x in gtk.gtk_version])) ('GTK+', '.'.join([str(x) for x in gtk.gtk_version])),
, ('PyGTK', '.'.join([str(x) for x in gtk.pygtk_version])) ('PyGTK', '.'.join([str(x) for x in gtk.pygtk_version])),
, ('matplotlib', matplotlib_version) ('matplotlib', matplotlib_version),
, ('numpy', numpy_version) ('numpy', numpy_version),
, ('sqlite', sqlite_version) ('sqlite', sqlite_version),
, ('fpdb version', VERSION) ('fpdb version', VERSION),
, ('database used', self.settings['db-server']) ('database used', self.settings['db-server'])
] ]
versions = gtk.TextBuffer() versions = gtk.TextBuffer()
w = 20 # width used for module names and version numbers w = 20 # width used for module names and version numbers
@ -362,9 +378,7 @@ class fpdb:
(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, (gtk.STOCK_OK, gtk.RESPONSE_ACCEPT,
gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT)) gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
label=gtk.Label(_("Note that this dialogue will overwrite an existing config if one has been made already. ") + label = gtk.Label(_("Please select the game category for which you want to configure HUD stats:"))
_("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:"))
diaSelections.vbox.add(label) diaSelections.vbox.add(label)
label.show() label.show()
@ -381,7 +395,7 @@ class fpdb:
comboRows.connect("changed", self.hudConfiguratorComboSelection) comboRows.connect("changed", self.hudConfiguratorComboSelection)
diaSelections.vbox.add(comboRows) diaSelections.vbox.add(comboRows)
for i in range(1, 8): for i in range(1, 8):
comboRows.append_text(_("%d rows") % i) comboRows.append_text(str(i) + " rows")
comboRows.set_active(0) comboRows.set_active(0)
comboRows.show() comboRows.show()
@ -389,14 +403,17 @@ class fpdb:
comboColumns.connect("changed", self.hudConfiguratorComboSelection) comboColumns.connect("changed", self.hudConfiguratorComboSelection)
diaSelections.vbox.add(comboColumns) diaSelections.vbox.add(comboColumns)
for i in range(1, 8): for i in range(1, 8):
comboColumns.append_text("%d columns" % i) comboColumns.append_text(str(i) + " columns")
comboColumns.set_active(0) comboColumns.set_active(0)
comboColumns.show() comboColumns.show()
response = diaSelections.run() response = diaSelections.run()
diaSelections.destroy() 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" #print "clicked ok and selected:", self.hudConfiguratorGame,"with", str(self.hudConfiguratorRows), "rows and", str(self.hudConfiguratorColumns), "columns"
self.diaHudConfiguratorTable() self.diaHudConfiguratorTable()
#end def diaHudConfigurator #end def diaHudConfigurator
@ -444,10 +461,12 @@ class fpdb:
statDir = dir(Stats) statDir = dir(Stats)
statDict = {} statDict = {}
for attr in statDir: for attr in statDir:
if attr.startswith('__'): continue if attr.startswith('__'):
continue
if attr in ("Charset", "Configuration", "Database", "GInitiallyUnowned", "gtk", "pygtk", if attr in ("Charset", "Configuration", "Database", "GInitiallyUnowned", "gtk", "pygtk",
"player", "c", "db_connection", "do_stat", "do_tip", "stat_dict", "player", "c", "db_connection", "do_stat", "do_tip", "stat_dict",
"h", "re", "re_Percent", "re_Places", "L10n", "log", "encoder", "codecs", "_", "sys", "logging"): continue "h", "re", "re_Percent", "re_Places", ):
continue
statDict[attr] = eval("Stats.%s.__doc__" % (attr)) statDict[attr] = eval("Stats.%s.__doc__" % (attr))
for rowNumber in range(self.hudConfiguratorRows + 1): for rowNumber in range(self.hudConfiguratorRows + 1):
@ -457,12 +476,18 @@ class fpdb:
if columnNumber == 0: if columnNumber == 0:
pass pass
else: else:
label=gtk.Label(_("column %d") % columnNumber) label = gtk.Label("column " + str(columnNumber))
table.attach(child=label, left_attach=columnNumber, right_attach=columnNumber+1, top_attach=rowNumber, bottom_attach=rowNumber+1) table.attach(child=label, left_attach=columnNumber,
right_attach=columnNumber + 1,
top_attach=rowNumber,
bottom_attach=rowNumber + 1)
label.show() label.show()
elif columnNumber == 0: elif columnNumber == 0:
label=gtk.Label(_("row %d") % rowNumber) label = gtk.Label("row " + str(rowNumber))
table.attach(child=label, left_attach=columnNumber, right_attach=columnNumber+1, top_attach=rowNumber, bottom_attach=rowNumber+1) table.attach(child=label, left_attach=columnNumber,
right_attach=columnNumber + 1,
top_attach=rowNumber,
bottom_attach=rowNumber + 1)
label.show() label.show()
else: else:
comboBox = gtk.combo_box_new_text() comboBox = gtk.combo_box_new_text()
@ -472,7 +497,10 @@ class fpdb:
comboBox.set_active(0) comboBox.set_active(0)
newRow.append(comboBox) 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() comboBox.show()
if rowNumber != 0: if rowNumber != 0:
@ -575,7 +603,7 @@ class fpdb:
def dia_recreate_hudcache(self, widget, data=None): def dia_recreate_hudcache(self, widget, data=None):
if self.obtain_global_lock("dia_recreate_hudcache"): 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.") diastring = _("Please confirm that you want to re-create the HUD cache.")
self.dia_confirm.format_secondary_text(diastring) self.dia_confirm.format_secondary_text(diastring)
# disable windowclose, do not want the the underlying processing interrupted mid-process # disable windowclose, do not want the the underlying processing interrupted mid-process
@ -627,11 +655,11 @@ class fpdb:
def dia_rebuild_indexes(self, widget, data=None): def dia_rebuild_indexes(self, widget, data=None):
if self.obtain_global_lock("dia_rebuild_indexes"): if self.obtain_global_lock("dia_rebuild_indexes"):
self.dia_confirm = gtk.MessageDialog(parent=self.window self.dia_confirm = gtk.MessageDialog(parent=self.window,
,flags=gtk.DIALOG_DESTROY_WITH_PARENT flags=gtk.DIALOG_DESTROY_WITH_PARENT,
,type=gtk.MESSAGE_WARNING type=gtk.MESSAGE_WARNING,
,buttons=(gtk.BUTTONS_YES_NO) buttons=(gtk.BUTTONS_YES_NO),
,message_format=_("Confirm rebuilding database indexes")) message_format=_("Confirm rebuilding database indexes"))
diastring = _("Please confirm that you want to rebuild the database indexes.") diastring = _("Please confirm that you want to rebuild the database indexes.")
self.dia_confirm.format_secondary_text(diastring) self.dia_confirm.format_secondary_text(diastring)
# disable windowclose, do not want the the underlying processing interrupted mid-process # 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.logbuffer.insert(end_iter, text)
self.logview.scroll_to_mark(self.logbuffer.get_insert(), 0) self.logview.scroll_to_mark(self.logbuffer.get_insert(), 0)
def process_close_messages(self): def process_close_messages(self):
# check for close messages # check for close messages
try: try:
@ -850,21 +877,20 @@ class fpdb:
return menubar return menubar
#end def get_menu #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.""" """Loads profile from the provided path name."""
self.config = Configuration.Config(file=options.config, dbname=options.dbname) self.config = Configuration.Config(file=options.config, dbname=options.dbname)
if self.config.file_error: if self.config.file_error:
self.warning_box(_("There is an error in your config file\n") + self.config.file self.warning_box(_("There is an error in your config file\n") + self.config.file
+ _("\n\nError is: ") + str(self.config.file_error) + _("\n\nError is: ") + str(self.config.file_error),
, diatitle=_("CONFIG FILE ERROR")) diatitle=_("CONFIG FILE ERROR"))
sys.exit() sys.exit()
log = Configuration.get_logger("logging.conf", "fpdb", log_dir=self.config.dir_log) 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)) print (_("Logfile is %s\n") % os.path.join(self.config.dir_log, self.config.log_file))
if self.config.example_copy: if self.config.example_copy:
self.info_box(_("Config file") self.info_box(_("Config file"),
, _("has been created at:\n%s.\n") % self.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.")) + _("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 = {}
self.settings['global_lock'] = self.lock self.settings['global_lock'] = self.lock
@ -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'])) # 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: 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.")) label = gtk.Label(_("An invalid DB version or missing tables have been detected."))
diaDbVersionWarning.vbox.add(label) diaDbVersionWarning.vbox.add(label)
@ -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) self.window.set_border_width(1)
defx, defy = 900, 720 defx, defy = 900, 720
sx, sy = gtk.gdk.screen_width(), gtk.gdk.screen_height() sx, sy = gtk.gdk.screen_width(), gtk.gdk.screen_height()
if sx < defx: defx = sx if sx < defx:
if sy < defy: defy = sy defx = sx
if sy < defy:
defy = sy
self.window.set_default_size(defx, defy) self.window.set_default_size(defx, defy)
self.window.set_resizable(True) self.window.set_resizable(True)
@ -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() self.window.present()
def info_box(self, str1, str2): def info_box(self, str1, str2):
diapath = gtk.MessageDialog( parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_INFO diapath = gtk.MessageDialog(parent=self.window, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_INFO,
, buttons=(gtk.BUTTONS_OK), message_format=str1 ) buttons=(gtk.BUTTONS_OK), message_format=str1)
diapath.format_secondary_text(str2) diapath.format_secondary_text(str2)
response = diapath.run() response = diapath.run()
diapath.destroy() diapath.destroy()
return response return response
def warning_box(self, str, diatitle=_("FPDB WARNING")): 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) label = gtk.Label(str)
diaWarning.vbox.add(label) diaWarning.vbox.add(label)
@ -1296,26 +1327,6 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
return response return response
def validate_config(self): 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 # check if sites in config file are in DB
for site in self.config.get_supported_sites(True): # get site names from config file for site in self.config.get_supported_sites(True): # get site names from config file
try: try:
@ -1331,10 +1342,10 @@ 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) self.add_site(site)
def add_site(self, site): def add_site(self, site):
dia = gtk.Dialog( title="Add Site", parent=self.window dia = gtk.Dialog(title="Add Site", parent=self.window,
, flags=gtk.DIALOG_DESTROY_WITH_PARENT flags=gtk.DIALOG_DESTROY_WITH_PARENT,
, buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT,
,gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT) gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT)
) )
h = gtk.HBox() h = gtk.HBox()

View File

@ -444,13 +444,6 @@ class Importer:
log.info((_("Converting %s") % file) + " (" + str(q.qsize()) + ")") log.info((_("Converting %s") % file) + " (" + str(q.qsize()) + ")")
else: else:
log.info(_("Converting %s") % file) 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", "") filter_name = filter.replace("ToFpdb", "")
@ -462,9 +455,7 @@ class Importer:
idx = self.pos_in_file[file] idx = self.pos_in_file[file]
else: else:
self.pos_in_file[file] = 0 self.pos_in_file[file] = 0
hhc = obj( self.config, in_path = file, out_path = out_path, index = idx hhc = obj( self.config, in_path = file, index = idx, starsArchive = self.settings['starsArchive'], ftpArchive = self.settings['ftpArchive'], sitename = site )
, starsArchive = self.settings['starsArchive'], ftpArchive = self.settings['ftpArchive'],
sitename = site )
if hhc.getStatus(): if hhc.getStatus():
handlist = hhc.getProcessedHands() handlist = hhc.getProcessedHands()
self.pos_in_file[file] = hhc.getLastCharacterRead() 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): def readHandInfo(self, hand):
m = self.re_HandInfo.search(hand.handText) m = self.re_HandInfo.search(hand.handText)
if m is None: 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) 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() mg = m.groupdict()
#print "DEBUG: m.groupdict(): %s" % mg #print "DEBUG: m.groupdict(): %s" % mg
hand.handid = m.group('HID') hand.handid = m.group('HID')

Binary file not shown.

Binary file not shown.

View File

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

View File

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

View File

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

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Free Poker Database\n" "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" "PO-Revision-Date: 2011-03-09 15:37+0000\n"
"Last-Translator: kibbitzer <thomas.joannes@gmail.com>\n" "Last-Translator: kibbitzer <thomas.joannes@gmail.com>\n"
"Language-Team: French (France) <>\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" msgid "determineGameType: Raising FpdbParseError"
msgstr "determineGameType: Une erreur d'analyse de Fpdb est survenue" msgstr "determineGameType: Une erreur d'analyse de Fpdb est survenue"
#: AbsoluteToFpdb.py:204 #: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
msgid "readHandInfo: Didn't match: '%s'" #: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
msgstr "ReadHandInfo: Pas de correspondance: '%s'" #: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: AbsoluteToFpdb.py:205 #: iPokerToFpdb.py:158
msgid "Absolute: Didn't match re_HandInfo: '%s'" #, fuzzy
msgstr "Absolute: Pas de correspondance avec re_HandInfo: '%s'" msgid "No match in readHandInfo: '%s'"
msgstr "Pas de correspondance dans readHandInfo"
#: AbsoluteToFpdb.py:207 #: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename" #, fuzzy
msgid "File name didn't match re_*InfoFromFilename"
msgstr "" msgstr ""
"readHandInfo: Le nom de fichier ne correspond pas à re_*IntoFromFileName" "readHandInfo: Le nom de fichier ne correspond pas à re_*IntoFromFileName"
@ -55,7 +57,8 @@ msgid "File name: %s"
msgstr "Nom de fichier: '%s'" msgstr "Nom de fichier: '%s'"
#: AbsoluteToFpdb.py:209 #: 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'" msgstr "Absolute: Ne correspond pas à re_*IntoFromFileName: '%s'"
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416 #: 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." msgid "Absolute readStudPlayerCards is only a stub."
msgstr "Absolute readStudPlayerCards est un bout de programme temporaire." msgstr "Absolute readStudPlayerCards est un bout de programme temporaire."
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234 #: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:235 EverleafToFpdb.py:288 #: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#, fuzzy #: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: %s %s" msgid "Unimplemented readAction: '%s' '%s'"
msgstr "readAction non implémenté: '%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 #: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291 #: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history" msgid "parse input hand history"
msgstr "analyse de l'historique des mains" 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 #: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292 #: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to" msgid "output translation to"
msgstr "traduction envoyée vers" 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 #: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293 #: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input" msgid "follow (tail -f) the input"
@ -109,19 +112,10 @@ msgid "Could not find file %s"
msgstr "Impossible de trouver le fichier %s" msgstr "Impossible de trouver le fichier %s"
#: Anonymise.py:55 #: Anonymise.py:55
msgid "Output being written to" #, fuzzy
msgid "Output being written to %s"
msgstr "Enregistrement du résultat dans" 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 #: BetfairToFpdb.py:123
msgid "readPlayerStacks: Less than 2 players found in a hand" msgid "readPlayerStacks: Less than 2 players found in a hand"
msgstr "readPlayerStacks: Moins de 2 joueurs trouvés dans une main" msgstr "readPlayerStacks: Moins de 2 joueurs trouvés dans une main"
@ -139,12 +133,6 @@ msgstr "Bring-In non trouvé"
msgid "DEBUG: " msgid "DEBUG: "
msgstr "" 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 #: Card.py:431
msgid "fpdb card encoding(same as pokersource)" msgid "fpdb card encoding(same as pokersource)"
msgstr "encodage des cartes fpdb (même que pokersource)" msgstr "encodage des cartes fpdb (même que pokersource)"
@ -247,18 +235,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults." msgid "Configuration file %s not found. Using defaults."
msgstr "Fichier de configuration %s non trouvé. Defaut utilisé." msgstr "Fichier de configuration %s non trouvé. Defaut utilisé."
#: Configuration.py:714 #: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s" msgid "Reading configuration file %s"
msgstr "Lecture du fichier de configuration %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 #: Configuration.py:721
msgid "Error parsing %s. See error log file." msgid "Error parsing %s. See error log file."
msgstr "Erreur d'analyse %s. Voir fichier de log d'erreur" msgstr "Erreur d'analyse %s. Voir fichier de log d'erreur"
@ -558,39 +538,39 @@ msgstr ""
msgid "***Error sending finish: " msgid "***Error sending finish: "
msgstr "***Erreur lors de l'envoi de fin: " msgstr "***Erreur lors de l'envoi de fin: "
#: Database.py:2401 #: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney" msgid "invalid source in Database.createOrUpdateTourney"
msgstr "source invalide dans Database.createOrUpdateTourney" msgstr "source invalide dans Database.createOrUpdateTourney"
#: Database.py:2414 #: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers" msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr "source invalide dans Database.createOrUpdateTourneysPlayers" msgstr "source invalide dans Database.createOrUpdateTourneysPlayers"
#: Database.py:2540 #: Database.py:2554
msgid "HandToWrite.init error: " msgid "HandToWrite.init error: "
msgstr "HandToWrite.init erreur: " msgstr "HandToWrite.init erreur: "
#: Database.py:2590 #: Database.py:2604
msgid "HandToWrite.set_all error: " msgid "HandToWrite.set_all error: "
msgstr "HandToWrite.set_all erreur: " msgstr "HandToWrite.set_all erreur: "
#: Database.py:2621 #: Database.py:2635
msgid "nutOmatic is id_player = %d" msgid "nutOmatic is id_player = %d"
msgstr "nutOmatic est id_player = %d" msgstr "nutOmatic est id_player = %d"
#: Database.py:2629 #: Database.py:2643
msgid "query plan: " msgid "query plan: "
msgstr "plan de requête: " msgstr "plan de requête: "
#: Database.py:2638 #: Database.py:2652
msgid "cards =" msgid "cards ="
msgstr "cartes =" msgstr "cartes ="
#: Database.py:2641 #: Database.py:2655
msgid "get_stats took: %4.3f seconds" msgid "get_stats took: %4.3f seconds"
msgstr "get_stats a duré: %4.3f seconds" msgstr "get_stats a duré: %4.3f seconds"
#: Database.py:2643 #: Database.py:2657
msgid "press enter to continue" msgid "press enter to continue"
msgstr "appuyez sur entrée pour continuer" msgstr "appuyez sur entrée pour continuer"
@ -603,6 +583,11 @@ msgid "Everleaf readStudPlayerCards is only a stub."
msgstr "" msgstr ""
"Everleaf readStudPlayerCards est seulement un bout de programme temporaire." "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 #: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s" msgid "readShowdownActions %s %s"
msgstr "" msgstr ""
@ -623,31 +608,33 @@ msgstr "Montre _Limites"
msgid "Show Number of _Players" msgid "Show Number of _Players"
msgstr "Montre le nombre de _Joueurs" msgstr "Montre le nombre de _Joueurs"
#: Filters.py:54 TourneyFilters.py:51 #: Filters.py:54 TourneyFilters.py:53
msgid "And:" msgid "And:"
msgstr "Et:" msgstr "Et:"
#: Filters.py:54 TourneyFilters.py:51 #: Filters.py:54 TourneyFilters.py:53
msgid "Between:" msgid "Between:"
msgstr "Entre:" msgstr "Entre:"
#: Filters.py:55 #: Filters.py:55 GuiPrefs.py:33
msgid "Games:" #, fuzzy
msgid "Games"
msgstr "Parties:" 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:" msgid "Hero:"
msgstr "Héros:" msgstr "Héros:"
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr "Sites:"
#: Filters.py:56 #: Filters.py:56
msgid "Limits:" msgid "Limits:"
msgstr "Limites" msgstr "Limites"
#: Filters.py:56 TourneyFilters.py:50 #: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:" msgid "Number of Players:"
msgstr "Nombre de Joueurs :" msgstr "Nombre de Joueurs :"
@ -659,7 +646,7 @@ msgstr "Regroupement:"
msgid "Show Position Stats" msgid "Show Position Stats"
msgstr "Montre les stats par position" msgstr "Montre les stats par position"
#: Filters.py:58 TourneyFilters.py:51 #: Filters.py:58 TourneyFilters.py:53
msgid "Date:" msgid "Date:"
msgstr "Date:" msgstr "Date:"
@ -680,7 +667,7 @@ msgstr "Tournoi"
msgid "New packing box created!" msgid "New packing box created!"
msgstr "DEBUG: Nouvelle boîte de stockage créée !" 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" msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr "0 ou plus d'un site correspondant (%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 #: FulltiltToFpdb.py:267
#, fuzzy #, fuzzy
msgid "readHandInfo: Raising FpdbParseError" msgid "Raising FpdbParseError"
msgstr "parseSummary: Une erreur d'analyse de Fpdb est survenue" msgstr "parseSummary: Une erreur d'analyse de Fpdb est survenue"
#: FulltiltToFpdb.py:369 #: FulltiltToFpdb.py:369
@ -1268,7 +1255,7 @@ msgid "Host Computer"
msgstr "Ordinateur hôte" msgstr "Ordinateur hôte"
#: GuiDatabase.py:481 #: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s" msgid "addDB.run: response is %s, accept is %s"
msgstr "" msgstr ""
#: GuiDatabase.py:495 #: GuiDatabase.py:495
@ -1345,65 +1332,67 @@ msgid "Log Viewer"
msgstr "Visualiseur de Log" msgstr "Visualiseur de Log"
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49 #: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
#, fuzzy
msgid "" msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n" "Failed to load libs for graphing, graphing will not function. Please install "
" install numpy and matplotlib if you want to use graphs." "numpy and matplotlib if you want to use graphs."
msgstr "" msgstr ""
"Le chargement des libs de graph a échoué, graph indisponible. Veuillez\n" "Le chargement des libs de graph a échoué, graph indisponible. Veuillez\n"
" installer numpy et matplotlib si vous voulez utiliser les " " installer numpy et matplotlib si vous voulez utiliser les "
"graphiques." "graphiques."
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51 #: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
#, fuzzy
msgid "" msgid ""
"This is of no consequence for other parts of the program, e.g. import \n" "This is of no consequence for other parts of the program, e.g. import and "
" and HUD are NOT affected by this problem." "HUD are NOT affected by this problem."
msgstr "" msgstr ""
"Celà n'a aucune incidence sur le reste du programme, par ex. importation \n" "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." " 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" msgid "Refresh _Graph"
msgstr "Rafraîchir _Graphique" msgstr "Rafraîchir _Graphique"
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86 #: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File" msgid "_Export to File"
msgstr "_Exporter vers un fichier" msgstr "_Exporter vers un fichier"
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372 #: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232 #: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: " msgid "***Error: "
msgstr "***Erreur: " msgstr "***Erreur: "
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270 #: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159 #: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268 #: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars" msgid "No sites selected - defaulting to PokerStars"
msgstr "Pas de site sélectionné - Pokerstars par défaut" msgstr "Pas de site sélectionné - Pokerstars par défaut"
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273 #: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164 #: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271 #: GuiTourneyPlayerStats.py:271
msgid "No player ids found" msgid "No player ids found"
msgstr "Pas d'Ids de joueur trouvés" 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 #: GuiSessionViewer.py:218
msgid "No limits found" msgid "No limits found"
msgstr "Pas de limites trouvées" msgstr "Pas de limites trouvées"
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174 #: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s" msgid "Graph generated in: %s"
msgstr "Graphique généré en: %s" msgstr "Graphique généré en: %s"
#: GuiGraphViewer.py:193 #: GuiGraphViewer.py:191
msgid "Hands" msgid "Hands"
msgstr "Mains" msgstr "Mains"
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182 #: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found" msgid "No Data for Player(s) Found"
msgstr "Pas de Données Trouvées pour le(s) Joueur(s)" msgstr "Pas de Données Trouvées pour le(s) Joueur(s)"
#: GuiGraphViewer.py:221 #: GuiGraphViewer.py:219
msgid "" msgid ""
"Hands: %d\n" "Hands: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
@ -1411,19 +1400,19 @@ msgstr ""
"Mains: %d\n" "Mains: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
#: GuiGraphViewer.py:222 #: GuiGraphViewer.py:220
msgid "Showdown: $%.2f" msgid "Showdown: $%.2f"
msgstr "Abattage: $%.2f" msgstr "Abattage: $%.2f"
#: GuiGraphViewer.py:223 #: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f" msgid "Non-showdown: $%.2f"
msgstr "Sans abattage: $%.2f" msgstr "Sans abattage: $%.2f"
#: GuiGraphViewer.py:231 #: GuiGraphViewer.py:229
msgid "Profit graph for ring games" msgid "Profit graph for ring games"
msgstr "" msgstr ""
#: GuiGraphViewer.py:234 #: GuiGraphViewer.py:232
msgid "" msgid ""
"Hands: %d\n" "Hands: %d\n"
"Profit (%s): %.2f" "Profit (%s): %.2f"
@ -1431,23 +1420,23 @@ msgstr ""
"Mains: %d\n" "Mains: %d\n"
"Profit (%s): %.2f" "Profit (%s): %.2f"
#: GuiGraphViewer.py:236 #: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f" msgid "Showdown (%s): %.2f"
msgstr "Abattage (%s): %.2f" msgstr "Abattage (%s): %.2f"
#: GuiGraphViewer.py:238 #: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f" msgid "Non-showdown (%s): %.2f"
msgstr "Sans abattage (%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:" msgid "Please choose the directory you wish to export to:"
msgstr "Veuillez choisir le répertoire vers lequel vous souhaitez exporter :" 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" msgid "Closed, no graph exported"
msgstr "Fermé, pas de graphique exporté" msgstr "Fermé, pas de graphique exporté"
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307 #: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created" msgid "Graph created"
msgstr "Graphique créé" msgstr "Graphique créé"
@ -1582,16 +1571,6 @@ msgstr ""
msgid "Import" msgid "Import"
msgstr "_Importation" msgstr "_Importation"
#: GuiPrefs.py:33
#, fuzzy
msgid "Games"
msgstr "Parties:"
#: GuiPrefs.py:33
#, fuzzy
msgid "Sites"
msgstr "Sites:"
#: GuiPrefs.py:34 #: GuiPrefs.py:34
#, fuzzy #, fuzzy
msgid "Popup Windows" msgid "Popup Windows"
@ -1669,6 +1648,7 @@ msgid "Setting"
msgstr "Paramétrage" msgstr "Paramétrage"
#: GuiPrefs.py:78 #: GuiPrefs.py:78
#, fuzzy
msgid "Value (double-click to change)" msgid "Value (double-click to change)"
msgstr "Valeur (double-cliquer pour changer)" msgstr "Valeur (double-cliquer pour changer)"
@ -1973,12 +1953,12 @@ msgstr ""
#: GuiStove.py:134 #: GuiStove.py:134
#, fuzzy #, fuzzy
msgid "Gametype:" msgid "Gametype"
msgstr "Parties:" msgstr "Parties:"
#: GuiStove.py:137 #: GuiStove.py:137
#, fuzzy #, fuzzy
msgid "Players:" msgid "Players"
msgstr "Tous les joueurs" msgstr "Tous les joueurs"
#: GuiStove.py:143 #: GuiStove.py:143
@ -2026,11 +2006,11 @@ msgstr ""
msgid "called update_flop_output_pane" msgid "called update_flop_output_pane"
msgstr "" msgstr ""
#: GuiTourneyGraphViewer.py:178 #: GuiTourneyGraphViewer.py:176
msgid "Tournaments" msgid "Tournaments"
msgstr "Tournois" msgstr "Tournois"
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218 #: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid "" msgid ""
"Tournaments: %d\n" "Tournaments: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
@ -2038,7 +2018,7 @@ msgstr ""
"Tournois: %d\n" "Tournois: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
#: GuiTourneyGraphViewer.py:215 #: GuiTourneyGraphViewer.py:213
msgid "Tournament Results" msgid "Tournament Results"
msgstr "Résultats de tournois" msgstr "Résultats de tournois"
@ -2222,9 +2202,8 @@ msgstr ""
msgid "hud_main: Game changed." msgid "hud_main: Game changed."
msgstr "" msgstr ""
#: HUD_main.pyw:144 #: HUD_main.pyw:144 fpdb.pyw:971
#, fuzzy msgid "Quitting normally"
msgid "Terminating normally."
msgstr "Quitte normalement" msgstr "Quitte normalement"
#: HUD_main.pyw:205 #: HUD_main.pyw:205
@ -3048,18 +3027,9 @@ msgstr "Impossible de lire Handinfo pour cette main"
msgid "Cannot read GameType for current hand" msgid "Cannot read GameType for current hand"
msgstr "Impossible de lire le GameType pour cette main" msgstr "Impossible de lire le GameType pour cette main"
#: PartyPokerToFpdb.py:348 #: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
#, fuzzy #, fuzzy
msgid "Failed to detect currency. HID: %s: '%s'" msgid "Failed to detect currency. Hand ID: %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'"
msgstr "Impossible de trouver la devise" msgstr "Impossible de trouver la devise"
#: SplitHandHistory.py:76 #: SplitHandHistory.py:76
@ -3348,10 +3318,14 @@ msgid "tournament tracker starting\n"
msgstr "démarrage du tracker de tournoi\n" msgstr "démarrage du tracker de tournoi\n"
#: TourneyFilters.py:52 #: TourneyFilters.py:52
msgid "Sites:"
msgstr "Sites:"
#: TourneyFilters.py:54
msgid "Tourney Type" msgid "Tourney Type"
msgstr "Type de Tournoi" msgstr "Type de Tournoi"
#: TourneyFilters.py:86 #: TourneyFilters.py:88
msgid "setting numTourneys:" msgid "setting numTourneys:"
msgstr "Paramètre 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 " "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." "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 #: WinTables.py:81
#, fuzzy #, fuzzy
msgid "Window %s not found. Skipping." 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?" msgid "self.window doesn't exist? why?"
msgstr "self.window n'existe pas ? Pourquoi ?" msgstr "self.window n'existe pas ? Pourquoi ?"
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr "Impossible de trouver la devise"
#: WinamaxToFpdb.py:300 #: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'" msgid "readplayerstacks: re is '%s'"
msgstr "" msgstr ""
@ -4124,10 +4099,6 @@ msgstr ""
"\n" "\n"
"Impossible d'obtenir un verrou global, il actuellement détenu par %s" "Impossible d'obtenir un verrou global, il actuellement détenu par %s"
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr "Quitte normalement"
#: fpdb.pyw:996 #: fpdb.pyw:996
msgid "Global lock released.\n" msgid "Global lock released.\n"
msgstr "Verrou global libéré.\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 " "pas de répertoire gtk trouvé à cet endroit - installez gtk ou modifiez le "
"chemin manuellement\n" "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'" #~ msgid "determineGameType: Unable to recognise gametype from: '%s'"
#~ msgstr "" #~ msgstr ""
#~ "determineGameType: Impossible de reconnaître le type de jeu de: '%s'" #~ "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 "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Free Poker Database\n" "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" "PO-Revision-Date: 2011-03-09 22:36+0000\n"
"Last-Translator: greg20 <greg20@isonews2.com>\n" "Last-Translator: greg20 <greg20@isonews2.com>\n"
"Language-Team: Polish (Poland) <>\n" "Language-Team: Polish (Poland) <>\n"
@ -38,16 +38,17 @@ msgstr ""
msgid "determineGameType: Raising FpdbParseError" msgid "determineGameType: Raising FpdbParseError"
msgstr "" msgstr ""
#: AbsoluteToFpdb.py:204 #: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
msgid "readHandInfo: Didn't match: '%s'" #: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
msgstr "" #: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: AbsoluteToFpdb.py:205 #: iPokerToFpdb.py:158
msgid "Absolute: Didn't match re_HandInfo: '%s'" #, fuzzy
msgstr "" msgid "No match in readHandInfo: '%s'"
msgstr "Brak dopasowań in XTables dla tabeli '%s'."
#: AbsoluteToFpdb.py:207 #: AbsoluteToFpdb.py:207
msgid "readHandInfo: File name didn't match re_*InfoFromFilename" msgid "File name didn't match re_*InfoFromFilename"
msgstr "" msgstr ""
#: AbsoluteToFpdb.py:208 #: AbsoluteToFpdb.py:208
@ -55,7 +56,7 @@ msgid "File name: %s"
msgstr "" msgstr ""
#: AbsoluteToFpdb.py:209 #: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'" msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr "" msgstr ""
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416 #: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
@ -80,24 +81,25 @@ msgstr ""
msgid "Absolute readStudPlayerCards is only a stub." msgid "Absolute readStudPlayerCards is only a stub."
msgstr "" msgstr ""
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234 #: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:235 EverleafToFpdb.py:288 #: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
msgid "Unimplemented readAction: %s %s" #: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: '%s' '%s'"
msgstr "" 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 #: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291 #: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history" msgid "parse input hand history"
msgstr "" 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 #: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292 #: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to" msgid "output translation to"
msgstr "" 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 #: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293 #: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input" msgid "follow (tail -f) the input"
@ -108,17 +110,7 @@ msgid "Could not find file %s"
msgstr "" msgstr ""
#: Anonymise.py:55 #: Anonymise.py:55
msgid "Output being written to" 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 ""
#: BetfairToFpdb.py:109 CarbonToFpdb.py:165 EverestToFpdb.py:147
#: PokerStarsToFpdb.py:223
msgid "No match in readHandInfo."
msgstr "" msgstr ""
#: BetfairToFpdb.py:123 #: BetfairToFpdb.py:123
@ -138,11 +130,6 @@ msgstr ""
msgid "DEBUG: " msgid "DEBUG: "
msgstr "" 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 #: Card.py:431
msgid "fpdb card encoding(same as pokersource)" msgid "fpdb card encoding(same as pokersource)"
msgstr "" msgstr ""
@ -229,16 +216,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults." msgid "Configuration file %s not found. Using defaults."
msgstr "" msgstr ""
#: Configuration.py:714 #: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s" msgid "Reading configuration file %s"
msgstr "" msgstr ""
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
#: Configuration.py:721 #: Configuration.py:721
msgid "Error parsing %s. See error log file." msgid "Error parsing %s. See error log file."
msgstr "" msgstr ""
@ -525,39 +506,39 @@ msgstr ""
msgid "***Error sending finish: " msgid "***Error sending finish: "
msgstr "" msgstr ""
#: Database.py:2401 #: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney" msgid "invalid source in Database.createOrUpdateTourney"
msgstr "" msgstr ""
#: Database.py:2414 #: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers" msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr "" msgstr ""
#: Database.py:2540 #: Database.py:2554
msgid "HandToWrite.init error: " msgid "HandToWrite.init error: "
msgstr "" msgstr ""
#: Database.py:2590 #: Database.py:2604
msgid "HandToWrite.set_all error: " msgid "HandToWrite.set_all error: "
msgstr "" msgstr ""
#: Database.py:2621 #: Database.py:2635
msgid "nutOmatic is id_player = %d" msgid "nutOmatic is id_player = %d"
msgstr "" msgstr ""
#: Database.py:2629 #: Database.py:2643
msgid "query plan: " msgid "query plan: "
msgstr "" msgstr ""
#: Database.py:2638 #: Database.py:2652
msgid "cards =" msgid "cards ="
msgstr "" msgstr ""
#: Database.py:2641 #: Database.py:2655
msgid "get_stats took: %4.3f seconds" msgid "get_stats took: %4.3f seconds"
msgstr "" msgstr ""
#: Database.py:2643 #: Database.py:2657
msgid "press enter to continue" msgid "press enter to continue"
msgstr "" msgstr ""
@ -569,6 +550,10 @@ msgstr ""
msgid "Everleaf readStudPlayerCards is only a stub." msgid "Everleaf readStudPlayerCards is only a stub."
msgstr "" msgstr ""
#: EverleafToFpdb.py:288
msgid "Unimplemented readAction: %s %s"
msgstr ""
#: EverleafToFpdb.py:297 #: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s" msgid "readShowdownActions %s %s"
msgstr "" msgstr ""
@ -589,31 +574,31 @@ msgstr ""
msgid "Show Number of _Players" msgid "Show Number of _Players"
msgstr "" msgstr ""
#: Filters.py:54 TourneyFilters.py:51 #: Filters.py:54 TourneyFilters.py:53
msgid "And:" msgid "And:"
msgstr "" msgstr ""
#: Filters.py:54 TourneyFilters.py:51 #: Filters.py:54 TourneyFilters.py:53
msgid "Between:" msgid "Between:"
msgstr "" msgstr ""
#: Filters.py:55 #: Filters.py:55 GuiPrefs.py:33
msgid "Games:" msgid "Games"
msgstr "" msgstr ""
#: Filters.py:55 TourneyFilters.py:50 #: Filters.py:55 GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:" msgid "Hero:"
msgstr "" msgstr ""
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr ""
#: Filters.py:56 #: Filters.py:56
msgid "Limits:" msgid "Limits:"
msgstr "" msgstr ""
#: Filters.py:56 TourneyFilters.py:50 #: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:" msgid "Number of Players:"
msgstr "" msgstr ""
@ -625,7 +610,7 @@ msgstr ""
msgid "Show Position Stats" msgid "Show Position Stats"
msgstr "" msgstr ""
#: Filters.py:58 TourneyFilters.py:51 #: Filters.py:58 TourneyFilters.py:53
msgid "Date:" msgid "Date:"
msgstr "" msgstr ""
@ -645,7 +630,7 @@ msgstr ""
msgid "New packing box created!" msgid "New packing box created!"
msgstr "" msgstr ""
#: Filters.py:106 TourneyFilters.py:114 #: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK" msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr "" msgstr ""
@ -781,7 +766,7 @@ msgid "Lim_Blinds has no lookup for '%s'"
msgstr "" msgstr ""
#: FulltiltToFpdb.py:267 #: FulltiltToFpdb.py:267
msgid "readHandInfo: Raising FpdbParseError" msgid "Raising FpdbParseError"
msgstr "" msgstr ""
#: FulltiltToFpdb.py:369 #: FulltiltToFpdb.py:369
@ -1193,7 +1178,7 @@ msgid "Host Computer"
msgstr "" msgstr ""
#: GuiDatabase.py:481 #: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s" msgid "addDB.run: response is %s, accept is %s"
msgstr "" msgstr ""
#: GuiDatabase.py:495 #: GuiDatabase.py:495
@ -1270,99 +1255,99 @@ msgstr ""
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49 #: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
msgid "" msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n" "Failed to load libs for graphing, graphing will not function. Please install "
" install numpy and matplotlib if you want to use graphs." "numpy and matplotlib if you want to use graphs."
msgstr "" msgstr ""
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51 #: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
msgid "" msgid ""
"This is of no consequence for other parts of the program, e.g. import \n" "This is of no consequence for other parts of the program, e.g. import and "
" and HUD are NOT affected by this problem." "HUD are NOT affected by this problem."
msgstr "" msgstr ""
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84 #: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph" msgid "Refresh _Graph"
msgstr "" msgstr ""
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86 #: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File" msgid "_Export to File"
msgstr "" msgstr ""
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372 #: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232 #: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: " msgid "***Error: "
msgstr "" msgstr ""
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270 #: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159 #: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268 #: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars" msgid "No sites selected - defaulting to PokerStars"
msgstr "" msgstr ""
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273 #: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164 #: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271 #: GuiTourneyPlayerStats.py:271
msgid "No player ids found" msgid "No player ids found"
msgstr "" msgstr ""
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276 #: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218 #: GuiSessionViewer.py:218
msgid "No limits found" msgid "No limits found"
msgstr "" msgstr ""
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174 #: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s" msgid "Graph generated in: %s"
msgstr "" msgstr ""
#: GuiGraphViewer.py:193 #: GuiGraphViewer.py:191
msgid "Hands" msgid "Hands"
msgstr "" msgstr ""
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182 #: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found" msgid "No Data for Player(s) Found"
msgstr "" msgstr ""
#: GuiGraphViewer.py:221 #: GuiGraphViewer.py:219
msgid "" msgid ""
"Hands: %d\n" "Hands: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:222 #: GuiGraphViewer.py:220
msgid "Showdown: $%.2f" msgid "Showdown: $%.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:223 #: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f" msgid "Non-showdown: $%.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:231 #: GuiGraphViewer.py:229
msgid "Profit graph for ring games" msgid "Profit graph for ring games"
msgstr "" msgstr ""
#: GuiGraphViewer.py:234 #: GuiGraphViewer.py:232
msgid "" msgid ""
"Hands: %d\n" "Hands: %d\n"
"Profit (%s): %.2f" "Profit (%s): %.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:236 #: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f" msgid "Showdown (%s): %.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:238 #: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f" msgid "Non-showdown (%s): %.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276 #: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:" msgid "Please choose the directory you wish to export to:"
msgstr "" msgstr ""
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289 #: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported" msgid "Closed, no graph exported"
msgstr "" msgstr ""
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307 #: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created" msgid "Graph created"
msgstr "" msgstr ""
@ -1491,14 +1476,6 @@ msgstr ""
msgid "Import" msgid "Import"
msgstr "_Import" msgstr "_Import"
#: GuiPrefs.py:33
msgid "Games"
msgstr ""
#: GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: GuiPrefs.py:34 #: GuiPrefs.py:34
msgid "Popup Windows" msgid "Popup Windows"
msgstr "" msgstr ""
@ -1837,11 +1814,11 @@ msgid "Flop"
msgstr "" msgstr ""
#: GuiStove.py:134 #: GuiStove.py:134
msgid "Gametype:" msgid "Gametype"
msgstr "" msgstr ""
#: GuiStove.py:137 #: GuiStove.py:137
msgid "Players:" msgid "Players"
msgstr "" msgstr ""
#: GuiStove.py:143 #: GuiStove.py:143
@ -1884,17 +1861,17 @@ msgstr ""
msgid "called update_flop_output_pane" msgid "called update_flop_output_pane"
msgstr "" msgstr ""
#: GuiTourneyGraphViewer.py:178 #: GuiTourneyGraphViewer.py:176
msgid "Tournaments" msgid "Tournaments"
msgstr "" msgstr ""
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218 #: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid "" msgid ""
"Tournaments: %d\n" "Tournaments: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
msgstr "" msgstr ""
#: GuiTourneyGraphViewer.py:215 #: GuiTourneyGraphViewer.py:213
msgid "Tournament Results" msgid "Tournament Results"
msgstr "" msgstr ""
@ -2061,9 +2038,8 @@ msgstr ""
msgid "hud_main: Game changed." msgid "hud_main: Game changed."
msgstr "" msgstr ""
#: HUD_main.pyw:144 #: HUD_main.pyw:144 fpdb.pyw:971
#, fuzzy msgid "Quitting normally"
msgid "Terminating normally."
msgstr "normalne wychodzenie" msgstr "normalne wychodzenie"
#: HUD_main.pyw:205 #: HUD_main.pyw:205
@ -2851,18 +2827,9 @@ msgstr ""
msgid "Cannot read GameType for current hand" msgid "Cannot read GameType for current hand"
msgstr "" msgstr ""
#: PartyPokerToFpdb.py:348 #: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
#, fuzzy #, fuzzy
msgid "Failed to detect currency. HID: %s: '%s'" msgid "Failed to detect currency. Hand ID: %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'"
msgstr "nie wykryto waluty" msgstr "nie wykryto waluty"
#: SplitHandHistory.py:76 #: SplitHandHistory.py:76
@ -3152,10 +3119,14 @@ msgid "tournament tracker starting\n"
msgstr "tracker turniejowy rozpoczyna\n" msgstr "tracker turniejowy rozpoczyna\n"
#: TourneyFilters.py:52 #: TourneyFilters.py:52
msgid "Sites:"
msgstr ""
#: TourneyFilters.py:54
msgid "Tourney Type" msgid "Tourney Type"
msgstr "Rodzaj turnieju" msgstr "Rodzaj turnieju"
#: TourneyFilters.py:86 #: TourneyFilters.py:88
msgid "setting numTourneys:" msgid "setting numTourneys:"
msgstr "ustawianie numTourneys:" msgstr "ustawianie numTourneys:"
@ -3335,6 +3306,10 @@ msgstr ""
"Ten moduł został napisany i przetestowany z GTK w wersji 2.8.18. Używasz " "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ć." "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 #: WinTables.py:81
#, fuzzy #, fuzzy
msgid "Window %s not found. Skipping." 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?" msgid "self.window doesn't exist? why?"
msgstr "self.window nie istnieje? dlaczego?" msgstr "self.window nie istnieje? dlaczego?"
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr "nie wykryto waluty"
#: WinamaxToFpdb.py:300 #: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'" msgid "readplayerstacks: re is '%s'"
msgstr "" msgstr ""
@ -3495,13 +3466,17 @@ msgstr "Liczba rozdań: "
msgid "" msgid ""
"\n" "\n"
"Number of Tourneys: " "Number of Tourneys: "
msgstr "Liczba turniejów: " msgstr ""
"\n"
"Liczba turniejów: "
#: fpdb.pyw:349 #: fpdb.pyw:349
msgid "" msgid ""
"\n" "\n"
"Number of TourneyTypes: " "Number of TourneyTypes: "
msgstr "Liczba rodzajów turnieju: " msgstr ""
"\n"
"Liczba rodzajów turnieju: "
#: fpdb.pyw:350 #: fpdb.pyw:350
msgid "Database Statistics" msgid "Database Statistics"
@ -3580,7 +3555,7 @@ msgid ""
"and you will have to re-import your histories.\n" "and you will have to re-import your histories.\n"
msgstr "" msgstr ""
" Jeżeli już istnieją tabele w bazie danych %s na %s zostaną one usunięte i " " 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 #: fpdb.pyw:547
msgid "This may take a while." msgid "This may take a while."
@ -3900,10 +3875,6 @@ msgstr ""
"\n" "\n"
"Nie udało się pobrać blokady ogólnej, jest ona aktualnie używana przez %s" "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 #: fpdb.pyw:996
msgid "Global lock released.\n" msgid "Global lock released.\n"
msgstr "Uwolniono ogólną blokadę.\n" msgstr "Uwolniono ogólną blokadę.\n"
@ -3996,7 +3967,9 @@ msgstr ""
msgid "" msgid ""
"\n" "\n"
"Any major error will be reported there _only_.\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 #: fpdb.pyw:1208
msgid "fpdb starting ..." msgid "fpdb starting ..."
@ -4180,3 +4153,14 @@ msgstr ""
"\n" "\n"
"Nie znaleziono katalogów GTK w podanej przez Ciebie ścieżce. Zainstaluj GTK " "Nie znaleziono katalogów GTK w podanej przez Ciebie ścieżce. Zainstaluj GTK "
"lub wprowadź ścieżkę ręcznie.\n" "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 "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Free Poker Database\n" "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" "PO-Revision-Date: 2011-03-04 18:18+0000\n"
"Last-Translator: Lexej <alexej@glyvin.com>\n" "Last-Translator: Lexej <alexej@glyvin.com>\n"
"Language-Team: Russian (Russia) <>\n" "Language-Team: Russian (Russia) <>\n"
@ -38,16 +38,18 @@ msgstr "Невозможно определить тип игры: '%s'"
msgid "determineGameType: Raising FpdbParseError" msgid "determineGameType: Raising FpdbParseError"
msgstr "determineGameType: FpdbParseError" msgstr "determineGameType: FpdbParseError"
#: AbsoluteToFpdb.py:204 #: AbsoluteToFpdb.py:204 AbsoluteToFpdb.py:205 BetfairToFpdb.py:108
msgid "readHandInfo: Didn't match: '%s'" #: BetfairToFpdb.py:109 CarbonToFpdb.py:163 CarbonToFpdb.py:165
msgstr "readHandInfo: нет соответствия: '%s'" #: EverestToFpdb.py:145 EverestToFpdb.py:147 EverleafToFpdb.py:145
#: PokerStarsToFpdb.py:222 PokerStarsToFpdb.py:223 iPokerToFpdb.py:156
#: AbsoluteToFpdb.py:205 #: iPokerToFpdb.py:158
msgid "Absolute: Didn't match re_HandInfo: '%s'" #, fuzzy
msgstr "Absolute: re_HandInfo не соответствует: '%s'" msgid "No match in readHandInfo: '%s'"
msgstr "Нет соответствия в readHandInfo."
#: AbsoluteToFpdb.py:207 #: 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" msgstr "readHandInfo: имя файла не соответствует re_*InfoFromFilename"
#: AbsoluteToFpdb.py:208 #: AbsoluteToFpdb.py:208
@ -55,7 +57,8 @@ msgid "File name: %s"
msgstr "Имя файла: %s" msgstr "Имя файла: %s"
#: AbsoluteToFpdb.py:209 #: AbsoluteToFpdb.py:209
msgid "Absolute: Didn't match re_*InfoFromFilename: '%s'" #, fuzzy
msgid "Didn't match re_*InfoFromFilename: '%s'"
msgstr "Absolute: Не соответствует re_*InfoFromFilename: '%s'" msgstr "Absolute: Не соответствует re_*InfoFromFilename: '%s'"
#: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416 #: AbsoluteToFpdb.py:278 EverleafToFpdb.py:218 FulltiltToFpdb.py:416
@ -80,25 +83,25 @@ msgstr "Нет малого блайнда"
msgid "Absolute readStudPlayerCards is only a stub." msgid "Absolute readStudPlayerCards is only a stub."
msgstr "Absolute readStudPlayerCards это заглушка." msgstr "Absolute readStudPlayerCards это заглушка."
#: AbsoluteToFpdb.py:351 CarbonToFpdb.py:267 EverestToFpdb.py:234 #: AbsoluteToFpdb.py:351 BetfairToFpdb.py:199 CarbonToFpdb.py:267
#: EverestToFpdb.py:235 EverleafToFpdb.py:288 #: EverestToFpdb.py:234 EverestToFpdb.py:235 OnGameToFpdb.py:337
#, fuzzy #: PartyPokerToFpdb.py:536 PokerStarsToFpdb.py:439
msgid "Unimplemented readAction: %s %s" msgid "Unimplemented readAction: '%s' '%s'"
msgstr "DEBUG: не выполнена 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 #: EverleafToFpdb.py:326 FulltiltToFpdb.py:784 PartyPokerToFpdb.py:577
#: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291 #: PokerStarsToFpdb.py:467 Win2dayToFpdb.py:368 iPokerToFpdb.py:291
msgid "parse input hand history" msgid "parse input hand history"
msgstr "разбор файлов истории" 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 #: EverleafToFpdb.py:327 FulltiltToFpdb.py:785 PartyPokerToFpdb.py:578
#: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292 #: PokerStarsToFpdb.py:468 Win2dayToFpdb.py:369 iPokerToFpdb.py:292
msgid "output translation to" msgid "output translation to"
msgstr "перенаправить перевод" 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 #: EverleafToFpdb.py:328 FulltiltToFpdb.py:786 PartyPokerToFpdb.py:579
#: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293 #: PokerStarsToFpdb.py:469 Win2dayToFpdb.py:370 iPokerToFpdb.py:293
msgid "follow (tail -f) the input" msgid "follow (tail -f) the input"
@ -109,19 +112,10 @@ msgid "Could not find file %s"
msgstr "Не удалось найти файл %s" msgstr "Не удалось найти файл %s"
#: Anonymise.py:55 #: Anonymise.py:55
msgid "Output being written to" #, fuzzy
msgid "Output being written to %s"
msgstr "Вывод будет записан в файл " 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 #: BetfairToFpdb.py:123
msgid "readPlayerStacks: Less than 2 players found in a hand" msgid "readPlayerStacks: Less than 2 players found in a hand"
msgstr "readPlayerStacks: Менее двух игроков в руке" msgstr "readPlayerStacks: Менее двух игроков в руке"
@ -139,12 +133,6 @@ msgstr "Bring-In не найден"
msgid "DEBUG: " msgid "DEBUG: "
msgstr "" 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 #: Card.py:431
msgid "fpdb card encoding(same as pokersource)" msgid "fpdb card encoding(same as pokersource)"
msgstr "fpdb кодирование карт (так же, как и в pokersource)" msgstr "fpdb кодирование карт (так же, как и в pokersource)"
@ -236,16 +224,10 @@ msgstr ""
msgid "Configuration file %s not found. Using defaults." msgid "Configuration file %s not found. Using defaults."
msgstr "" msgstr ""
#: Configuration.py:714 #: Configuration.py:714 Configuration.py:715
msgid "Reading configuration file %s" msgid "Reading configuration file %s"
msgstr "" msgstr ""
#: Configuration.py:715
msgid ""
"\n"
"Reading configuration file %s\n"
msgstr ""
#: Configuration.py:721 #: Configuration.py:721
msgid "Error parsing %s. See error log file." msgid "Error parsing %s. See error log file."
msgstr "" msgstr ""
@ -532,39 +514,39 @@ msgstr ""
msgid "***Error sending finish: " msgid "***Error sending finish: "
msgstr "" msgstr ""
#: Database.py:2401 #: Database.py:2405
msgid "invalid source in Database.createOrUpdateTourney" msgid "invalid source in Database.createOrUpdateTourney"
msgstr "" msgstr ""
#: Database.py:2414 #: Database.py:2418
msgid "invalid source in Database.createOrUpdateTourneysPlayers" msgid "invalid source in Database.createOrUpdateTourneysPlayers"
msgstr "" msgstr ""
#: Database.py:2540 #: Database.py:2554
msgid "HandToWrite.init error: " msgid "HandToWrite.init error: "
msgstr "" msgstr ""
#: Database.py:2590 #: Database.py:2604
msgid "HandToWrite.set_all error: " msgid "HandToWrite.set_all error: "
msgstr "" msgstr ""
#: Database.py:2621 #: Database.py:2635
msgid "nutOmatic is id_player = %d" msgid "nutOmatic is id_player = %d"
msgstr "" msgstr ""
#: Database.py:2629 #: Database.py:2643
msgid "query plan: " msgid "query plan: "
msgstr "" msgstr ""
#: Database.py:2638 #: Database.py:2652
msgid "cards =" msgid "cards ="
msgstr "" msgstr ""
#: Database.py:2641 #: Database.py:2655
msgid "get_stats took: %4.3f seconds" msgid "get_stats took: %4.3f seconds"
msgstr "" msgstr ""
#: Database.py:2643 #: Database.py:2657
msgid "press enter to continue" msgid "press enter to continue"
msgstr "" msgstr ""
@ -576,6 +558,11 @@ msgstr ""
msgid "Everleaf readStudPlayerCards is only a stub." msgid "Everleaf readStudPlayerCards is only a stub."
msgstr "" msgstr ""
#: EverleafToFpdb.py:288
#, fuzzy
msgid "Unimplemented readAction: %s %s"
msgstr "DEBUG: не выполнена readAction: '%s' '%s'"
#: EverleafToFpdb.py:297 #: EverleafToFpdb.py:297
msgid "readShowdownActions %s %s" msgid "readShowdownActions %s %s"
msgstr "" msgstr ""
@ -596,31 +583,31 @@ msgstr ""
msgid "Show Number of _Players" msgid "Show Number of _Players"
msgstr "" msgstr ""
#: Filters.py:54 TourneyFilters.py:51 #: Filters.py:54 TourneyFilters.py:53
msgid "And:" msgid "And:"
msgstr "" msgstr ""
#: Filters.py:54 TourneyFilters.py:51 #: Filters.py:54 TourneyFilters.py:53
msgid "Between:" msgid "Between:"
msgstr "" msgstr ""
#: Filters.py:55 #: Filters.py:55 GuiPrefs.py:33
msgid "Games:" msgid "Games"
msgstr "" msgstr ""
#: Filters.py:55 TourneyFilters.py:50 #: Filters.py:55 GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: Filters.py:55 TourneyFilters.py:52
msgid "Hero:" msgid "Hero:"
msgstr "Херо:" msgstr "Херо:"
#: Filters.py:55 TourneyFilters.py:50
msgid "Sites:"
msgstr ""
#: Filters.py:56 #: Filters.py:56
msgid "Limits:" msgid "Limits:"
msgstr "" msgstr ""
#: Filters.py:56 TourneyFilters.py:50 #: Filters.py:56 TourneyFilters.py:52
msgid "Number of Players:" msgid "Number of Players:"
msgstr "" msgstr ""
@ -632,7 +619,7 @@ msgstr ""
msgid "Show Position Stats" msgid "Show Position Stats"
msgstr "" msgstr ""
#: Filters.py:58 TourneyFilters.py:51 #: Filters.py:58 TourneyFilters.py:53
msgid "Date:" msgid "Date:"
msgstr "Дата:" msgstr "Дата:"
@ -652,7 +639,7 @@ msgstr "Турнир"
msgid "New packing box created!" msgid "New packing box created!"
msgstr "" msgstr ""
#: Filters.py:106 TourneyFilters.py:114 #: Filters.py:106 TourneyFilters.py:116
msgid "Either 0 or more than one site matched (%s) - EEK" msgid "Either 0 or more than one site matched (%s) - EEK"
msgstr "" msgstr ""
@ -789,7 +776,7 @@ msgstr ""
#: FulltiltToFpdb.py:267 #: FulltiltToFpdb.py:267
#, fuzzy #, fuzzy
msgid "readHandInfo: Raising FpdbParseError" msgid "Raising FpdbParseError"
msgstr "determineGameType: FpdbParseError" msgstr "determineGameType: FpdbParseError"
#: FulltiltToFpdb.py:369 #: FulltiltToFpdb.py:369
@ -1203,7 +1190,7 @@ msgid "Host Computer"
msgstr "" msgstr ""
#: GuiDatabase.py:481 #: GuiDatabase.py:481
msgid "addDB.run: response is %s accept is %s" msgid "addDB.run: response is %s, accept is %s"
msgstr "" msgstr ""
#: GuiDatabase.py:495 #: GuiDatabase.py:495
@ -1280,99 +1267,99 @@ msgstr ""
#: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49 #: GuiGraphViewer.py:49 GuiTourneyGraphViewer.py:49
msgid "" msgid ""
"Failed to load libs for graphing, graphing will not function. Please\n" "Failed to load libs for graphing, graphing will not function. Please install "
" install numpy and matplotlib if you want to use graphs." "numpy and matplotlib if you want to use graphs."
msgstr "" msgstr ""
#: GuiGraphViewer.py:51 GuiTourneyGraphViewer.py:51 #: GuiGraphViewer.py:50 GuiTourneyGraphViewer.py:50
msgid "" msgid ""
"This is of no consequence for other parts of the program, e.g. import \n" "This is of no consequence for other parts of the program, e.g. import and "
" and HUD are NOT affected by this problem." "HUD are NOT affected by this problem."
msgstr "" msgstr ""
#: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84 #: GuiGraphViewer.py:83 GuiTourneyGraphViewer.py:82
msgid "Refresh _Graph" msgid "Refresh _Graph"
msgstr "" msgstr ""
#: GuiGraphViewer.py:87 GuiTourneyGraphViewer.py:86 #: GuiGraphViewer.py:85 GuiTourneyGraphViewer.py:84
msgid "_Export to File" msgid "_Export to File"
msgstr "" msgstr ""
#: GuiGraphViewer.py:135 GuiGraphViewer.py:251 GuiSessionViewer.py:372 #: GuiGraphViewer.py:133 GuiGraphViewer.py:249 GuiSessionViewer.py:372
#: GuiTourneyGraphViewer.py:134 GuiTourneyGraphViewer.py:232 #: GuiTourneyGraphViewer.py:132 GuiTourneyGraphViewer.py:230
msgid "***Error: " msgid "***Error: "
msgstr "" msgstr ""
#: GuiGraphViewer.py:168 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270 #: GuiGraphViewer.py:166 GuiPositionalStats.py:168 GuiRingPlayerStats.py:270
#: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:159 #: GuiSessionViewer.py:212 GuiTourneyGraphViewer.py:157
#: GuiTourneyPlayerStats.py:268 #: GuiTourneyPlayerStats.py:268
msgid "No sites selected - defaulting to PokerStars" msgid "No sites selected - defaulting to PokerStars"
msgstr "" msgstr ""
#: GuiGraphViewer.py:173 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273 #: GuiGraphViewer.py:171 GuiPositionalStats.py:171 GuiRingPlayerStats.py:273
#: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:164 #: GuiSessionViewer.py:215 GuiTourneyGraphViewer.py:162
#: GuiTourneyPlayerStats.py:271 #: GuiTourneyPlayerStats.py:271
msgid "No player ids found" msgid "No player ids found"
msgstr "" msgstr ""
#: GuiGraphViewer.py:178 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276 #: GuiGraphViewer.py:176 GuiPositionalStats.py:174 GuiRingPlayerStats.py:276
#: GuiSessionViewer.py:218 #: GuiSessionViewer.py:218
msgid "No limits found" msgid "No limits found"
msgstr "" msgstr ""
#: GuiGraphViewer.py:188 GuiTourneyGraphViewer.py:174 #: GuiGraphViewer.py:186 GuiTourneyGraphViewer.py:172
msgid "Graph generated in: %s" msgid "Graph generated in: %s"
msgstr "" msgstr ""
#: GuiGraphViewer.py:193 #: GuiGraphViewer.py:191
msgid "Hands" msgid "Hands"
msgstr "" msgstr ""
#: GuiGraphViewer.py:198 GuiTourneyGraphViewer.py:182 #: GuiGraphViewer.py:196 GuiTourneyGraphViewer.py:180
msgid "No Data for Player(s) Found" msgid "No Data for Player(s) Found"
msgstr "" msgstr ""
#: GuiGraphViewer.py:221 #: GuiGraphViewer.py:219
msgid "" msgid ""
"Hands: %d\n" "Hands: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:222 #: GuiGraphViewer.py:220
msgid "Showdown: $%.2f" msgid "Showdown: $%.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:223 #: GuiGraphViewer.py:221
msgid "Non-showdown: $%.2f" msgid "Non-showdown: $%.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:231 #: GuiGraphViewer.py:229
msgid "Profit graph for ring games" msgid "Profit graph for ring games"
msgstr "" msgstr ""
#: GuiGraphViewer.py:234 #: GuiGraphViewer.py:232
msgid "" msgid ""
"Hands: %d\n" "Hands: %d\n"
"Profit (%s): %.2f" "Profit (%s): %.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:236 #: GuiGraphViewer.py:234
msgid "Showdown (%s): %.2f" msgid "Showdown (%s): %.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:238 #: GuiGraphViewer.py:236
msgid "Non-showdown (%s): %.2f" msgid "Non-showdown (%s): %.2f"
msgstr "" msgstr ""
#: GuiGraphViewer.py:365 GuiTourneyGraphViewer.py:276 #: GuiGraphViewer.py:363 GuiTourneyGraphViewer.py:274
msgid "Please choose the directory you wish to export to:" msgid "Please choose the directory you wish to export to:"
msgstr "" msgstr ""
#: GuiGraphViewer.py:378 GuiTourneyGraphViewer.py:289 #: GuiGraphViewer.py:376 GuiTourneyGraphViewer.py:287
msgid "Closed, no graph exported" msgid "Closed, no graph exported"
msgstr "" msgstr ""
#: GuiGraphViewer.py:396 GuiTourneyGraphViewer.py:307 #: GuiGraphViewer.py:394 GuiTourneyGraphViewer.py:305
msgid "Graph created" msgid "Graph created"
msgstr "" msgstr ""
@ -1501,14 +1488,6 @@ msgstr ""
msgid "Import" msgid "Import"
msgstr "Автоимпорт" msgstr "Автоимпорт"
#: GuiPrefs.py:33
msgid "Games"
msgstr ""
#: GuiPrefs.py:33
msgid "Sites"
msgstr ""
#: GuiPrefs.py:34 #: GuiPrefs.py:34
msgid "Popup Windows" msgid "Popup Windows"
msgstr "" msgstr ""
@ -1847,11 +1826,11 @@ msgid "Flop"
msgstr "" msgstr ""
#: GuiStove.py:134 #: GuiStove.py:134
msgid "Gametype:" msgid "Gametype"
msgstr "" msgstr ""
#: GuiStove.py:137 #: GuiStove.py:137
msgid "Players:" msgid "Players"
msgstr "" msgstr ""
#: GuiStove.py:143 #: GuiStove.py:143
@ -1896,17 +1875,17 @@ msgstr ""
msgid "called update_flop_output_pane" msgid "called update_flop_output_pane"
msgstr "" msgstr ""
#: GuiTourneyGraphViewer.py:178 #: GuiTourneyGraphViewer.py:176
msgid "Tournaments" msgid "Tournaments"
msgstr "" msgstr ""
#: GuiTourneyGraphViewer.py:205 GuiTourneyGraphViewer.py:218 #: GuiTourneyGraphViewer.py:203 GuiTourneyGraphViewer.py:216
msgid "" msgid ""
"Tournaments: %d\n" "Tournaments: %d\n"
"Profit: $%.2f" "Profit: $%.2f"
msgstr "" msgstr ""
#: GuiTourneyGraphViewer.py:215 #: GuiTourneyGraphViewer.py:213
msgid "Tournament Results" msgid "Tournament Results"
msgstr "" msgstr ""
@ -2069,8 +2048,8 @@ msgstr ""
msgid "hud_main: Game changed." msgid "hud_main: Game changed."
msgstr "" msgstr ""
#: HUD_main.pyw:144 #: HUD_main.pyw:144 fpdb.pyw:971
msgid "Terminating normally." msgid "Quitting normally"
msgstr "" msgstr ""
#: HUD_main.pyw:205 #: HUD_main.pyw:205
@ -2853,16 +2832,8 @@ msgstr ""
msgid "Cannot read GameType for current hand" msgid "Cannot read GameType for current hand"
msgstr "" msgstr ""
#: PartyPokerToFpdb.py:348 #: PartyPokerToFpdb.py:348 PokerStarsToFpdb.py:265 WinamaxToFpdb.py:263
msgid "Failed to detect currency. HID: %s: '%s'" msgid "Failed to detect currency. Hand ID: %s: '%s'"
msgstr ""
#: PartyPokerToFpdb.py:536
msgid "Unimplemented readAction: '%s' '%s'"
msgstr ""
#: PokerStarsToFpdb.py:265
msgid "Failed to detect currency: '%s'"
msgstr "" msgstr ""
#: SplitHandHistory.py:76 #: SplitHandHistory.py:76
@ -3145,10 +3116,14 @@ msgid "tournament tracker starting\n"
msgstr "" msgstr ""
#: TourneyFilters.py:52 #: TourneyFilters.py:52
msgid "Sites:"
msgstr ""
#: TourneyFilters.py:54
msgid "Tourney Type" msgid "Tourney Type"
msgstr "" msgstr ""
#: TourneyFilters.py:86 #: TourneyFilters.py:88
msgid "setting numTourneys:" msgid "setting numTourneys:"
msgstr "" msgstr ""
@ -3326,6 +3301,11 @@ msgid ""
"using version %d.%d.%d. Your milage may vary." "using version %d.%d.%d. Your milage may vary."
msgstr "" msgstr ""
#: Win2dayToFpdb.py:341 WinamaxToFpdb.py:406
#, fuzzy
msgid "unimplemented readAction: '%s' '%s'"
msgstr "DEBUG: не выполнена readAction: '%s' '%s'"
#: WinTables.py:81 #: WinTables.py:81
msgid "Window %s not found. Skipping." msgid "Window %s not found. Skipping."
msgstr "" msgstr ""
@ -3334,10 +3314,6 @@ msgstr ""
msgid "self.window doesn't exist? why?" msgid "self.window doesn't exist? why?"
msgstr "" msgstr ""
#: WinamaxToFpdb.py:263
msgid "failed to detect currency"
msgstr ""
#: WinamaxToFpdb.py:300 #: WinamaxToFpdb.py:300
msgid "readplayerstacks: re is '%s'" msgid "readplayerstacks: re is '%s'"
msgstr "" msgstr ""
@ -3868,10 +3844,6 @@ msgid ""
"Failed to get global lock, it is currently held by %s" "Failed to get global lock, it is currently held by %s"
msgstr "" msgstr ""
#: fpdb.pyw:971
msgid "Quitting normally"
msgstr ""
#: fpdb.pyw:996 #: fpdb.pyw:996
msgid "Global lock released.\n" msgid "Global lock released.\n"
msgstr "" msgstr ""
@ -3950,8 +3922,7 @@ msgstr ""
"пройдите по ссылке https://lists.sourceforge.net/lists/listinfo/fpdb-" "пройдите по ссылке https://lists.sourceforge.net/lists/listinfo/fpdb-"
"announce и подпишитесь на уведомления.\n" "announce и подпишитесь на уведомления.\n"
" Если Вы хотите следить за разработкой более пристально, подпишитесь здесь " " Если Вы хотите следить за разработкой более пристально, подпишитесь здесь "
"https://lists.sourceforge.net/lists/listinfo/fpdb-main.\n" "https://lists.sourceforge.net/lists/listinfo/fpdb-main."
"\n"
#: fpdb.pyw:1084 #: fpdb.pyw:1084
msgid "Help" msgid "Help"
@ -4139,6 +4110,19 @@ msgid ""
"manually\n" "manually\n"
msgstr "" 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'" #~ msgid "determineGameType: Unable to recognise gametype from: '%s'"
#~ msgstr "determineGameType: Невозможно определить тип игры: '%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-pl_PL.po locale/fpdb-en_GB.pot
msgmerge --update locale/fpdb-ru_RU.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" 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/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 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 sys
import os import os
import Configuration
config_path = Configuration.get_default_config_path()
try: try:
import gobject as _gobject import gobject as _gobject
@ -70,7 +67,7 @@ try:
(gtk.STOCK_CLOSE, gtk.RESPONSE_OK)) (gtk.STOCK_CLOSE, gtk.RESPONSE_OK))
dia.set_default_size(500, 300) 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) dia.vbox.add(l)
l.show() l.show()