From 12c08f6aa55c75d9b5ef71bb636d4043a3981f9e Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Tue, 2 Mar 2010 23:12:55 -0500 Subject: [PATCH 001/641] Delete xwininfo stuff. Reinstall Xlib stuff. --- pyfpdb/Tables_Demo.py | 6 +-- pyfpdb/XTables.py | 100 ++++++++++++++---------------------------- 2 files changed, 34 insertions(+), 72 deletions(-) diff --git a/pyfpdb/Tables_Demo.py b/pyfpdb/Tables_Demo.py index 92bb1a3c..199e81c2 100755 --- a/pyfpdb/Tables_Demo.py +++ b/pyfpdb/Tables_Demo.py @@ -3,7 +3,7 @@ Main program module to test/demo the Tables subclasses. """ -# Copyright 2008 - 2009, Ray E. Barker +# Copyright 2008 - 2010, Ray E. Barker # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,10 +24,8 @@ Main program module to test/demo the Tables subclasses. # Standard Library modules import sys import os -import re # pyGTK modules -import pygtk import gtk import gobject @@ -103,7 +101,7 @@ if __name__=="__main__": fake = fake_hud(table) print "fake =", fake -# gobject.timeout_add(100, check_on_table, table, fake) + gobject.timeout_add(100, check_on_table, table, fake) print "calling main" gtk.main() diff --git a/pyfpdb/XTables.py b/pyfpdb/XTables.py index 29a9b1d9..6b06eb0f 100644 --- a/pyfpdb/XTables.py +++ b/pyfpdb/XTables.py @@ -1,11 +1,9 @@ #!/usr/bin/env python -"""Discover_Tables.py +"""XTables.py -Inspects the currently open windows and finds those of interest to us--that is -poker table windows from supported sites. Returns a list -of Table_Window objects representing the windows found. +XWindows specific methods for TableWindows Class. """ -# Copyright 2008 - 2009, Ray E. Barker +# Copyright 2008 - 2010, Ray E. Barker # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -25,14 +23,11 @@ of Table_Window objects representing the windows found. # Standard Library modules import re -import os # pyGTK modules -import pygtk import gtk # Other Library modules -import Xlib import Xlib.display # FreePokerTools modules @@ -46,72 +41,41 @@ name_atom = disp.get_atom("WM_NAME", 1) class Table(Table_Window): def find_table_parameters(self, search_string): -# self.window = None -# done_looping = False -# for outside in root.query_tree().children: -# for inside in outside.query_tree().children: -# if done_looping: break -# prop = inside.get_property(name_atom, Xlib.Xatom.STRING, 0, 1000) -# print prop -# if prop is None: continue -# if prop.value and re.search(search_string, prop.value): -# if self.check_bad_words(prop.value): continue -## if inside.get_wm_name() and re.search(search_string, inside.get_wm_name()): -## if self.check_bad_words(inside.get_wm_name()): -## print "bad word =", inside.get_wm_name() -## continue -# self.window = inside -# self.parent = outside -# done_looping = True -# break + self.window = None + done_looping = False + for outside in root.query_tree().children: + for inside in outside.query_tree().children: + if done_looping: break + if inside.get_wm_name() and re.search(search_string, inside.get_wm_name()): + if self.check_bad_words(inside.get_wm_name()): continue + self.window = inside + self.parent = outside + done_looping = True + break - window_number = None - for listing in os.popen('xwininfo -root -tree').readlines(): - if re.search(search_string, listing): -# print listing - mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', listing) - self.number = int( mo.group(1), 0) - self.width = int( mo.group(4) ) - self.height = int( mo.group(5) ) - self.x = int( mo.group(6) ) - self.y = int( mo.group(7) ) - self.title = re.sub('\"', '', mo.group(2)) - self.exe = "" # not used? - self.hud = None -# done_looping = False -# for outside in root.query_tree().children: -# for inside in outside.query_tree().children: -# if done_looping: break -# if inside.id == window_number: -# self.window = inside -# self.parent = outside -# done_looping = True -# break - - if window_number is None: + if self.window == None or self.parent == None: + print "Window %s not found. Skipping." % search_string return None -# my_geo = self.window.get_geometry() -# pa_geo = self.parent.get_geometry() -# -# self.x = pa_geo.x + my_geo.x -# self.y = pa_geo.y + my_geo.y -# self.width = my_geo.width -# self.height = my_geo.height -# self.exe = self.window.get_wm_class()[0] -# self.title = self.window.get_wm_name() -# self.site = "" -# self.hud = None + my_geo = self.window.get_geometry() + pa_geo = self.parent.get_geometry() -# window_string = str(self.window) - mo = re.match('Xlib\.display\.Window\(([\dxabcdef]+)', window_string) + self.x = pa_geo.x + my_geo.x + self.y = pa_geo.y + my_geo.y + self.width = my_geo.width + self.height = my_geo.height + self.exe = self.window.get_wm_class()[0] + self.title = self.window.get_wm_name() + self.site = "" + self.hud = None + self.number = self.get_xid() + + def get_xid(self): + mo = re.match('Xlib\.display\.Window\(([\dxabcdef]+)', str(self.window)) if not mo: - print "Not matched" - self.gdk_handle = None + return None else: - self.number = int( mo.group(1), 0) - print "number =", self.number -# self.gdk_handle = gtk.gdk.window_foreign_new(int(self.number)) + return int( mo.group(1), 0) def get_geometry(self): try: From d294501c4ca41648595bdc5c5d0447a4a897c6f5 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Tue, 9 Mar 2010 12:47:50 -0500 Subject: [PATCH 002/641] Make more exe files in py2exe_setup. --- pyfpdb/py2exe_setup.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pyfpdb/py2exe_setup.py b/pyfpdb/py2exe_setup.py index 0db53a40..b89d7dfc 100644 --- a/pyfpdb/py2exe_setup.py +++ b/pyfpdb/py2exe_setup.py @@ -132,7 +132,12 @@ setup( console = [ {'script': 'fpdb.py', "icon_resources": [(1, "../gfx/fpdb_large_icon.ico")]}, {'script': 'HUD_main.py', }, - {'script': 'Configuration.py', } + {'script': 'Configuration.py', }, + {'script': 'Tables.py', }, + {'script': 'Stats.py', }, + {'script': 'Hello.py', }, + {'script': 'GuiBulkImport.py', }, + {'script': 'GuiAutoImport.py', } ], options = {'py2exe': { From 0e6aa16e418438320b4529a200714eb162cdc375 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Wed, 21 Jul 2010 18:40:33 -0400 Subject: [PATCH 003/641] catch up a minor changecatch up a minor change.. --- pyfpdb/FulltiltToFpdb.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 10ecb8dd..d6a9057c 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -689,5 +689,3 @@ if __name__ == "__main__": e = Fulltilt(in_path = options.ipath, out_path = options.opath, follow = options.follow) - - From 4ef31a02e1c96b04886cd2a9d7f81f7eae58751c Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Wed, 21 Jul 2010 18:43:45 -0400 Subject: [PATCH 004/641] Another tiny change to get in sync. --- pyfpdb/fpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index 768795ab..74e41e95 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -97,7 +97,7 @@ except: import GuiPrefs import GuiLogView -import GuiDatabase +#import GuiDatabase import GuiBulkImport import GuiPlayerStats import GuiPositionalStats From 15605efd241afcba9a8541fda72a724ee724581e Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Tue, 3 Aug 2010 17:48:47 +0300 Subject: [PATCH 005/641] Update changelog for .903 snapshot --- packaging/debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packaging/debian/changelog b/packaging/debian/changelog index 0616ad0e..0a27920a 100644 --- a/packaging/debian/changelog +++ b/packaging/debian/changelog @@ -1,3 +1,9 @@ +free-poker-tools (0.20.903-1) unstable; urgency=low + + * .903 snapshot release + + -- Mika Bostrom Tue, 03 Aug 2010 17:47:41 +0300 + free-poker-tools (0.20.902-1) unstable; urgency=low * New snapshot release; .901 was broken for FTP From bc06e031fa7e552e787afdbf69971d2207f37397 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 4 Aug 2010 13:16:34 +0800 Subject: [PATCH 006/641] Stars: Potention fix to Mixed PLH/PLO tourneys. "PokerStars Game #47587046512: Tournament #294420919, $5.00+$0.50 USD Mixed PLH/PLO (Hold'em Pot Limit) - Level XVII (500/1000) - 2010/08/01 20:39:48 ET" We already parsed up to 'Mixed' and accepted HORSE/HOSE and 8-Game previously. Added PLH/PLO to the list. --- pyfpdb/PokerStarsToFpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index 384f5082..64ec90ee 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -74,7 +74,7 @@ class PokerStars(HandHistoryConverter): # here's how I plan to use LS (?P(?P[%(LS)s\d\.]+)?\+?(?P[%(LS)s\d\.]+)?\+?(?P[%(LS)s\d\.]+)?\s?(?P%(LEGAL_ISO)s)?|Freeroll)\s+)? # close paren of tournament info - (?PHORSE|8\-Game|HOSE)?\s?\(? + (?PHORSE|8\-Game|HOSE|Mixed PLH/PLO)?\s?\(? (?PHold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s (?PNo\sLimit|Limit|LIMIT|Pot\sLimit)\)?,?\s (-\s)? From e203c1321df7b2d280127418fff42eb320bc0bc3 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Wed, 4 Aug 2010 08:54:16 +0100 Subject: [PATCH 007/641] add new section for ring stats to example hud_config --- pyfpdb/HUD_config.xml.example | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index 9ee17c1c..0f016b86 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -639,6 +639,37 @@ Left-Drag to Move" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From c0f8f2be2af092a40557e31c79e290da9088904e Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 4 Aug 2010 16:18:22 +0800 Subject: [PATCH 008/641] Config: Add default config for player stats columns --- pyfpdb/HUD_config.xml.example | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index 9ee17c1c..207b8e77 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -11,6 +11,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + e-h1lAhcF8~x&b&#b!M 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 Date: Sun, 15 Aug 2010 19:46:10 +0200 Subject: [PATCH 121/641] gettextify PS Summary, add note about py2exe --- pyfpdb/PokerStarsSummary.py | 4 ++-- pyfpdb/py2exe_setup.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pyfpdb/PokerStarsSummary.py b/pyfpdb/PokerStarsSummary.py index 347536a9..30421ea2 100644 --- a/pyfpdb/PokerStarsSummary.py +++ b/pyfpdb/PokerStarsSummary.py @@ -69,7 +69,7 @@ class PokerStarsSummary(TourneySummary): elif lines[1].find("FPP")!=-1: self.currency="PSFP" else: - raise FpdbParseError("didn't recognise buyin currency in:"+lines[1]) + raise FpdbParseError(_("didn't recognise buyin currency in:")+lines[1]) if self.currency=="USD" or self.currency=="EUR": result=self.re_BuyInFee.search(lines[1]) @@ -109,7 +109,7 @@ class PokerStarsSummary(TourneySummary): useET=False result=self.re_DateTime.search(lines[currentLine]) if not result: - print "in not result starttime" + print _("in not result starttime") useET=True result=self.re_DateTimeET.search(lines[currentLine]) result=result.groupdict() diff --git a/pyfpdb/py2exe_setup.py b/pyfpdb/py2exe_setup.py index a836ed76..9dbda8dd 100644 --- a/pyfpdb/py2exe_setup.py +++ b/pyfpdb/py2exe_setup.py @@ -69,6 +69,7 @@ Py2exe script for fpdb. # See walkthrough in packaging directory for versions used # Updates to this script have broken python 2.5 compatibility (gio module, msvcr71 references now msvcp90) +# steffeN: Doesnt seem necessary to gettext-ify this, but feel free to if you disagree import os import sys From a0f9d0ddee18486d4564727e487e4e9e2e9d8de4 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 19:55:51 +0200 Subject: [PATCH 122/641] remove useless ongametofpdb file --- pyfpdb/OnGameToFpdb.py | 242 ----------------------------------------- 1 file changed, 242 deletions(-) delete mode 100755 pyfpdb/OnGameToFpdb.py diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py deleted file mode 100755 index 80d8d646..00000000 --- a/pyfpdb/OnGameToFpdb.py +++ /dev/null @@ -1,242 +0,0 @@ -#!/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 sys -import Configuration -from HandHistoryConverter import * - -# OnGame HH Format - -#Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 -#Table Kuopio, 20 Sep 2008 11:59 PM - -#Seat 1: .Lucchess ($4.17 in chips) -#Seat 3: Gloff1 ($108 in chips) -#Seat 4: far a ($13.54 in chips) -#Seat 5: helander2222 ($49.77 in chips) -#Seat 6: lopllopl ($62.06 in chips) -#Seat 7: crazyhorse6 ($101.91 in chips) -#Seat 8: peeci ($25.02 in chips) -#Seat 9: Manuelhertz ($49 in chips) -#Seat 10: Eurolll ($58.25 in chips) -#ANTES/BLINDS -#helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). - -#PRE-FLOP -#crazyhorse6 folds, peeci folds, Manuelhertz folds, Eurolll calls $0.50, .Lucchess calls $0.50, Gloff1 folds, far a folds, helander2222 folds, lopllopl checks. - -#FLOP [board cards AH,8H,KH ] -#lopllopl checks, Eurolll checks, .Lucchess checks. - -#TURN [board cards AH,8H,KH,6S ] -#lopllopl checks, Eurolll checks, .Lucchess checks. - -#RIVER [board cards AH,8H,KH,6S,8S ] -#lopllopl checks, Eurolll bets $1.25, .Lucchess folds, lopllopl folds. - -#SHOWDOWN -#Eurolll wins $2.92. - -#SUMMARY -#Dealer: far a -#Pot: $3, (including rake: $0.08) -#.Lucchess, loses $0.50 -#Gloff1, loses $0 -#far a, loses $0 -#helander2222, loses $0.25 -#lopllopl, loses $0.50 -#crazyhorse6, loses $0 -#peeci, loses $0 -#Manuelhertz, loses $0 -#Eurolll, bets $1.75, collects $2.92, net $1.17 - - -class OnGame(HandHistoryConverter): - def __init__(self, config, file): - print "Initialising OnGame converter class" - HandHistoryConverter.__init__(self, config, file, sitename="OnGame") # Call super class init. - self.sitename = "OnGame" - self.setFileType("text", "cp1252") - self.siteId = 5 # Needs to match id entry in Sites database - #self.rexx.setGameInfoRegex('.*Blinds \$?(?P[.0-9]+)/\$?(?P[.0-9]+)') - self.rexx.setSplitHandRegex('\n\n\n+') - - #Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 - #Table Kuopio, 20 Sep 2008 11:59 PM - self.rexx.setHandInfoRegex(r"Texas Hold'em \$?(?P[.0-9]+)-\$?(?P[.0-9]+) NL \(real money\), hand #(?P[-A-Z\d]+)\nTable\ (?P[\' \w]+), (?P\d\d \w+ \d\d\d\d \d\d:\d\d (AM|PM))") - # SB BB HID TABLE DAY MON YEAR HR12 MIN AMPM - - self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P.*)\n') - - #Seat 1: .Lucchess ($4.17 in chips) - self.rexx.setPlayerInfoRegex('Seat (?P[0-9]+): (?P.*) \((\$(?P[.0-9]+) in chips)\)') - - #ANTES/BLINDS - #helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). - self.rexx.setPostSbRegex('(?P.*) posts blind \(\$?(?P[.0-9]+)\), ') - self.rexx.setPostBbRegex('\), (?P.*) posts blind \(\$?(?P[.0-9]+)\).') - self.rexx.setPostBothRegex('.*\n(?P.*): posts small \& big blinds \[\$? (?P[.0-9]+)') - self.rexx.setHeroCardsRegex('.*\nDealt\sto\s(?P.*)\s\[ (?P.*) \]') - - #lopllopl checks, Eurolll checks, .Lucchess checks. - self.rexx.setActionStepRegex('(, )?(?P.*?)(?P bets| checks| raises| calls| folds)( \$(?P\d*\.?\d*))?( and is all-in)?') - - #Uchilka shows [ KC,JD ] - self.rexx.setShowdownActionRegex('(?P.*) shows \[ (?P.+) \]') - - # TODO: read SUMMARY correctly for collected pot stuff. - #Uchilka, bets $11.75, collects $23.04, net $11.29 - self.rexx.setCollectPotRegex('(?P.*), bets.+, collects \$(?P\d*\.?\d*), net.* ') - self.rexx.sits_out_re = re.compile('(?P.*) sits out') - self.rexx.compileRegexes() - - def readSupportedGames(self): - pass - - def determineGameType(self): - # Cheating with this regex, only support nlhe at the moment - gametype = ["ring", "hold", "nl"] - - m = self.rexx.hand_info_re.search(self.obs) - gametype = gametype + [m.group('SB')] - gametype = gametype + [m.group('BB')] - - return gametype - - def readHandInfo(self, hand): - m = self.rexx.hand_info_re.search(hand.string) - hand.handid = m.group('HID') - hand.tablename = m.group('TABLE') - #hand.buttonpos = self.rexx.button_re.search(hand.string).group('BUTTONPNAME') -# These work, but the info is already in the Hand class - should be used for tourneys though. -# m.group('SB') -# m.group('BB') -# m.group('GAMETYPE') - -# Believe Everleaf time is GMT/UTC, no transation necessary -# Stars format (Nov 10 2008): 2008/11/07 12:38:49 CET [2008/11/07 7:38:49 ET] -# or : 2008/11/07 12:38:49 ET -# Not getting it in my HH files yet, so using -# 2008/11/10 3:58:52 ET -#TODO: Do conversion from GMT to ET -#TODO: Need some date functions to convert to different timezones (Date::Manip for perl rocked for this) - - hand.startTime = time.strptime(m.group('DATETIME'), "%d %b %Y %I:%M %p") - #hand.starttime = "%d/%02d/%02d %d:%02d:%02d ET" %(int(m.group('YEAR')), int(m.group('MON')), int(m.group('DAY')), - #int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC'))) - - def readPlayerStacks(self, hand): - m = self.rexx.player_info_re.finditer(hand.string) - players = [] - for a in m: - 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. - #m = re.search('(\*\* Dealing down cards \*\*\n)(?P.*?\n\*\*)?( Dealing Flop \*\* \[ (?P\S\S), (?P\S\S), (?P\S\S) \])?(?P.*?\*\*)?( Dealing Turn \*\* \[ (?P\S\S) \])?(?P.*?\*\*)?( Dealing River \*\* \[ (?P\S\S) \])?(?P.*)', hand.string,re.DOTALL) - - m = re.search(r"PRE-FLOP(?P.+(?=FLOP)|.+(?=SHOWDOWN))" - r"(FLOP (?P\[board cards .+ \].+(?=TURN)|.+(?=SHOWDOWN)))?" - r"(TURN (?P\[board cards .+ \].+(?=RIVER)|.+(?=SHOWDOWN)))?" - r"(RIVER (?P\[board cards .+ \].+(?=SHOWDOWN)))?", hand.string,re.DOTALL) - - hand.addStreets(m) - - - def readCommunityCards(self, hand, street): - self.rexx.board_re = re.compile(r"\[board cards (?P.+) \]") - print hand.streets.group(street) - if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP) - m = self.rexx.board_re.search(hand.streets.group(street)) - hand.setCommunityCards(street, m.group('CARDS').split(',')) - - def readBlinds(self, hand): - try: - m = self.rexx.small_blind_re.search(hand.string) - hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB')) - except: # no small blind - hand.addBlind(None, None, None) - for a in self.rexx.big_blind_re.finditer(hand.string): - hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB')) - for a in self.rexx.both_blinds_re.finditer(hand.string): - hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB')) - - def readHeroCards(self, hand): - m = self.rexx.hero_cards_re.search(hand.string) - if(m == None): - #Not involved in hand - hand.involved = False - else: - hand.hero = m.group('PNAME') - # "2c, qh" -> set(["2c","qc"]) - # Also works with Omaha hands. - cards = m.group('CARDS') - cards = set(cards.split(',')) - hand.addHoleCards(cards, m.group('PNAME')) - - def readAction(self, hand, street): - m = self.rexx.action_re.finditer(hand.streets.group(street)) - for action in m: - if action.group('ATYPE') == ' raises': - hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') ) - elif action.group('ATYPE') == ' calls': - hand.addCall( street, action.group('PNAME'), action.group('BET') ) - elif action.group('ATYPE') == ' bets': - hand.addBet( street, action.group('PNAME'), action.group('BET') ) - elif action.group('ATYPE') == ' folds': - hand.addFold( street, action.group('PNAME')) - elif action.group('ATYPE') == ' checks': - hand.addCheck( street, action.group('PNAME')) - else: - print "DEBUG: unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),) - #hand.actions[street] += [[action.group('PNAME'), action.group('ATYPE')]] - # TODO: Everleaf does not record uncalled bets. - - def readShowdownActions(self, hand): - for shows in self.rexx.showdown_action_re.finditer(hand.string): - cards = shows.group('CARDS') - cards = set(cards.split(',')) - hand.addShownCards(cards, shows.group('PNAME')) - - def readCollectPot(self,hand): - for m in self.rexx.collect_pot_re.finditer(hand.string): - hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT')) - - def readShownCards(self,hand): - return - #for m in self.rexx.collect_pot_re.finditer(hand.string): - #if m.group('CARDS') is not None: - #cards = m.group('CARDS') - #cards = set(cards.split(',')) - #hand.addShownCards(cards=None, player=m.group('PNAME'), holeandboard=cards) - - - - -if __name__ == "__main__": - c = Configuration.Config() - if len(sys.argv) == 1: - testfile = "regression-test-files/ongame/nlhe/ong NLH handhq_0.txt" - else: - testfile = sys.argv[1] - e = OnGame(c, testfile) - e.processFile() - print str(e) From 787ea15c01aebd9d5e649cf7768630ec54a98084 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 20:06:30 +0200 Subject: [PATCH 123/641] gettextify GuiDatabase --- pyfpdb/GuiDatabase.py | 57 ++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/pyfpdb/GuiDatabase.py b/pyfpdb/GuiDatabase.py index a808c7df..2529643b 100755 --- a/pyfpdb/GuiDatabase.py +++ b/pyfpdb/GuiDatabase.py @@ -35,6 +35,9 @@ import Exceptions import Database import SQL +import gettext +trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) +trans.install() class GuiDatabase: @@ -92,19 +95,19 @@ class GuiDatabase: self.scrolledwindow.add(self.listview) self.vbox.pack_start(self.scrolledwindow, expand=True, fill=True, padding=0) - refreshbutton = gtk.Button("Refresh") + refreshbutton = gtk.Button(_("Refresh")) refreshbutton.connect("clicked", self.refresh, None) self.vbox.pack_start(refreshbutton, False, False, 3) refreshbutton.show() - col = self.addTextColumn("Type", 0, False) - col = self.addTextColumn("Name", 1, False) - col = self.addTextColumn("Description", 2, True) - col = self.addTextColumn("Username", 3, True) - col = self.addTextColumn("Password", 4, True) - col = self.addTextColumn("Host", 5, True) - col = self.addTextObjColumn("Default", 6, 6) - col = self.addTextObjColumn("Status", 7, 8) + col = self.addTextColumn(_("Type"), 0, False) + col = self.addTextColumn(_("Name"), 1, False) + col = self.addTextColumn(_("Description"), 2, True) + col = self.addTextColumn(_("Username"), 3, True) + col = self.addTextColumn(_("Password"), 4, True) + col = self.addTextColumn(_("Host"), 5, True) + col = self.addTextObjColumn(_("Default"), 6, 6) + col = self.addTextObjColumn(_("Status"), 7, 8) #self.listview.get_selection().set_mode(gtk.SELECTION_SINGLE) #self.listview.get_selection().connect("changed", self.on_selection_changed) @@ -237,7 +240,7 @@ class GuiDatabase: self.liststore.clear() #self.listcols = [] - dia = self.info_box2(None, 'Testing database connections ... ', "", False, False) + dia = self.info_box2(None, _('Testing database connections ... '), "", False, False) while gtk.events_pending(): gtk.mainiteration() @@ -267,49 +270,47 @@ class GuiDatabase: try: # is creating empty db for sqlite ... mod db.py further? # add noDbTables flag to db.py? - log.debug("loaddbs: trying to connect to: %s/%s, %s, %s/%s" % (str(dbms_num),dbms,name,user,passwd)) + log.debug(_("loaddbs: trying to connect to: %s/%s, %s, %s/%s") % (str(dbms_num),dbms,name,user,passwd)) db.connect(backend=dbms_num, host=host, database=name, user=user, password=passwd, create=False) if db.connected: - log.debug(" connected ok") + log.debug(_(" connected ok")) status = 'ok' icon = gtk.STOCK_APPLY if db.wrongDbVersion: status = 'old' icon = gtk.STOCK_INFO else: - log.debug(" not connected but no exception") + log.debug(_(" not connected but no exception")) except Exceptions.FpdbMySQLAccessDenied: - err_msg = "MySQL Server reports: Access denied. Are your permissions set correctly?" + err_msg = _("MySQL Server reports: Access denied. Are your permissions set correctly?") status = "failed" icon = gtk.STOCK_CANCEL except Exceptions.FpdbMySQLNoDatabase: - err_msg = "MySQL client reports: 2002 or 2003 error. Unable to connect - " \ - + "Please check that the MySQL service has been started" + err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started") status = "failed" icon = gtk.STOCK_CANCEL except Exceptions.FpdbPostgresqlAccessDenied: - err_msg = "Postgres Server reports: Access denied. Are your permissions set correctly?" + err_msg = _("Postgres Server reports: Access denied. Are your permissions set correctly?") status = "failed" except Exceptions.FpdbPostgresqlNoDatabase: - err_msg = "Postgres client reports: Unable to connect - " \ - + "Please check that the Postgres service has been started" + err_msg = _("Postgres client reports: Unable to connect - Please check that the Postgres service has been started") status = "failed" icon = gtk.STOCK_CANCEL except: err = traceback.extract_tb(sys.exc_info()[2])[-1] log.info( 'db connection to '+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' - + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) ) + + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) )#TODO Gettextify status = "failed" icon = gtk.STOCK_CANCEL if err_msg: log.info( 'db connection to '+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' - + err_msg ) + + err_msg )#TODO Gettextify b = gtk.Button(name) b.show() iter = self.liststore.append( (dbms, name, comment, user, passwd, host, "", default_icon, status, icon) ) - self.info_box2(dia[0], "finished.", "", False, True) + self.info_box2(dia[0], _("finished."), "", False, True) self.listview.show() self.scrolledwindow.show() self.vbox.show() @@ -319,7 +320,7 @@ class GuiDatabase: self.dia.show() except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print 'loaddbs error: '+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' \ + print _('loaddbs error: ')+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' \ + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) def sortCols(self, col, n): @@ -340,9 +341,9 @@ class GuiDatabase: # to turn indicator off for other cols except: err = traceback.extract_tb(sys.exc_info()[2]) - print "***sortCols error: " + str(sys.exc_info()[1]) + print _("***sortCols error: ") + str(sys.exc_info()[1]) print "\n".join( [e[0]+':'+str(e[1])+" "+e[2] for e in err] ) - log.info('sortCols error: ' + str(sys.exc_info()) ) + log.info(_('sortCols error: ') + str(sys.exc_info()) ) def refresh(self, widget, data): self.loadDbs() @@ -363,7 +364,7 @@ class GuiDatabase: for d in c.get_children(): log.info('child: '+str(d)+' is a '+str(d.__class__)) if isinstance(d, gtk.Button): - log.info('removing button '+str(d)) + log.info(_('removing button %s'% str(d))) c.remove(d) if str2: dia.format_secondary_text(str2) @@ -412,12 +413,12 @@ if __name__=="__main__": config = Configuration.Config() win = gtk.Window(gtk.WINDOW_TOPLEVEL) - win.set_title("Test Log Viewer") + win.set_title(_("Test Log Viewer")) win.set_border_width(1) win.set_default_size(600, 500) win.set_resizable(True) - dia = gtk.Dialog("Log Viewer", + dia = gtk.Dialog(_("Log Viewer"), win, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CLOSE, gtk.RESPONSE_OK)) From 21211a7669f7a8f88b4ebcb36aa0b92021a5490e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 20:34:36 +0200 Subject: [PATCH 124/641] update po files --- pyfpdb/locale/fpdb-en_GB.po | 444 +++++++++++++++++++++------------ pyfpdb/locale/fpdb-hu_HU.po | 472 ++++++++++++++++++++++++------------ 2 files changed, 609 insertions(+), 307 deletions(-) diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index 9fb5bf44..88fd28f9 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -5,12 +5,12 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-15 06:01+CEST\n" +"POT-Creation-Date: 2010-08-15 20:33+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" "Generated-By: pygettext.py 1.5\n" @@ -51,6 +51,20 @@ msgstr "" msgid "follow (tail -f) the input" msgstr "" +#: Card.py:159 +msgid "fpdb card encoding(same as pokersource)" +msgstr "" + +#: Charset.py:45 Charset.py:60 Charset.py:75 Charset.py:86 Charset.py:94 +msgid "" +"Could not convert: \"%s\"\n" +msgstr "" + +#: Charset.py:48 Charset.py:63 Charset.py:78 +msgid "" +"Could not encode: \"%s\"\n" +msgstr "" + #: Configuration.py:98 msgid "" "No %s found\n" @@ -247,11 +261,11 @@ msgstr "" msgid " Clear Dates " msgstr "" -#: Filters.py:929 fpdb.pyw:713 +#: Filters.py:929 fpdb.pyw:719 msgid "Pick a date" msgstr "" -#: Filters.py:935 fpdb.pyw:719 +#: Filters.py:935 fpdb.pyw:725 msgid "Done" msgstr "" @@ -463,6 +477,98 @@ msgstr "" msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" msgstr "" +#: GuiDatabase.py:98 GuiLogView.py:88 +msgid "Refresh" +msgstr "" + +#: GuiDatabase.py:103 +msgid "Type" +msgstr "" + +#: GuiDatabase.py:104 +msgid "Name" +msgstr "" + +#: GuiDatabase.py:105 +msgid "Description" +msgstr "" + +#: GuiDatabase.py:106 GuiImapFetcher.py:111 +msgid "Username" +msgstr "" + +#: GuiDatabase.py:107 GuiImapFetcher.py:111 +msgid "Password" +msgstr "" + +#: GuiDatabase.py:108 +msgid "Host" +msgstr "" + +#: GuiDatabase.py:109 +msgid "Default" +msgstr "" + +#: GuiDatabase.py:110 +msgid "Status" +msgstr "" + +#: GuiDatabase.py:243 +msgid "Testing database connections ... " +msgstr "" + +#: GuiDatabase.py:273 +msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" +msgstr "" + +#: GuiDatabase.py:276 +msgid " connected ok" +msgstr "" + +#: GuiDatabase.py:283 +msgid " not connected but no exception" +msgstr "" + +#: GuiDatabase.py:285 fpdb.pyw:904 +msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" +msgstr "" + +#: GuiDatabase.py:289 +msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started" +msgstr "" + +#: GuiDatabase.py:293 fpdb.pyw:909 +msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" +msgstr "" + +#: GuiDatabase.py:296 +msgid "Postgres client reports: Unable to connect - Please check that the Postgres service has been started" +msgstr "" + +#: GuiDatabase.py:313 +msgid "finished." +msgstr "" + +#: GuiDatabase.py:323 +msgid "loaddbs error: " +msgstr "" + +#: GuiDatabase.py:344 GuiLogView.py:192 GuiTourneyPlayerStats.py:454 +msgid "***sortCols error: " +msgstr "" + +#: GuiDatabase.py:346 +msgid "sortCols error: " +msgstr "" + +#: GuiDatabase.py:416 GuiLogView.py:205 +msgid "Test Log Viewer" +msgstr "" + +#: GuiDatabase.py:421 GuiLogView.py:210 +msgid "Log Viewer" +msgstr "" + #: GuiGraphViewer.py:39 msgid "" "Failed to load libs for graphing, graphing will not function. Please\n" @@ -579,10 +685,6 @@ msgstr "" msgid "Mailserver" msgstr "" -#: GuiImapFetcher.py:111 -msgid "Password" -msgstr "" - #: GuiImapFetcher.py:111 msgid "Site" msgstr "" @@ -591,10 +693,6 @@ msgstr "" msgid "Use SSL" msgstr "" -#: GuiImapFetcher.py:111 -msgid "Username" -msgstr "" - #: GuiImapFetcher.py:142 msgid "Yes" msgstr "" @@ -603,6 +701,10 @@ msgstr "" msgid "No" msgstr "" +#: GuiLogView.py:53 +msgid "Log Messages" +msgstr "" + #: GuiPositionalStats.py:135 msgid "DEBUG: activesite set to %s" msgstr "" @@ -623,7 +725,7 @@ msgstr "" msgid "Test Preferences Dialog" msgstr "" -#: GuiPrefs.py:181 fpdb.pyw:288 +#: GuiPrefs.py:181 fpdb.pyw:294 msgid "Preferences" msgstr "" @@ -655,10 +757,6 @@ msgstr "" msgid "_Refresh Stats" msgstr "" -#: GuiTourneyPlayerStats.py:454 -msgid "***sortCols error: " -msgstr "" - #: GuiTourneyViewer.py:37 msgid "Enter the tourney number you want to display:" msgstr "" @@ -693,7 +791,7 @@ msgid "" "HUD_main: starting ..." msgstr "" -#: HUD_main.pyw:80 fpdb.pyw:868 +#: HUD_main.pyw:80 fpdb.pyw:874 msgid "Logfile is " msgstr "" @@ -706,7 +804,7 @@ msgid "" "Note: error output is being diverted to:\n" msgstr "" -#: HUD_main.pyw:87 fpdb.pyw:1130 +#: HUD_main.pyw:87 fpdb.pyw:1136 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1405,6 +1503,18 @@ msgstr "" msgid "press enter to end" msgstr "" +#: P5sResultsParser.py:10 +msgid "You need to manually enter the playername" +msgstr "" + +#: PokerStarsSummary.py:72 +msgid "didn't recognise buyin currency in:" +msgstr "" + +#: PokerStarsSummary.py:112 +msgid "in not result starttime" +msgstr "" + #: PokerStarsToFpdb.py:172 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "" @@ -1433,495 +1543,507 @@ msgstr "" msgid "reading antes" msgstr "" -#: fpdb.pyw:40 +#: Tables_Demo.py:64 +msgid "Fake HUD Main Window" +msgstr "" + +#: Tables_Demo.py:87 +msgid "enter table name to find: " +msgstr "" + +#: Tables_Demo.py:112 +msgid "calling main" +msgstr "" + +#: WinTables.py:70 +msgid "Window %s not found. Skipping." +msgstr "" + +#: WinTables.py:73 +msgid "self.window doesn't exist? why?" +msgstr "" + +#: fpdb.pyw:46 msgid "" " - press return to continue\n" msgstr "" -#: fpdb.pyw:47 +#: fpdb.pyw:53 msgid "" "\n" "python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" msgstr "" -#: fpdb.pyw:48 fpdb.pyw:60 fpdb.pyw:82 +#: fpdb.pyw:54 fpdb.pyw:66 fpdb.pyw:88 msgid "Press ENTER to continue." msgstr "" -#: fpdb.pyw:59 +#: fpdb.pyw:65 msgid "We appear to be running in Windows, but the Windows Python Extensions are not loading. Please install the PYWIN32 package from http://sourceforge.net/projects/pywin32/" msgstr "" -#: fpdb.pyw:81 +#: fpdb.pyw:87 msgid "Unable to load PYGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org." msgstr "" -#: fpdb.pyw:239 +#: fpdb.pyw:245 msgid "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, sqlcoder, Bostik, and others" msgstr "" -#: fpdb.pyw:240 +#: fpdb.pyw:246 msgid "You are free to change, and distribute original or changed versions of fpdb within the rules set out by the license" msgstr "" -#: fpdb.pyw:241 +#: fpdb.pyw:247 msgid "Please see fpdb's start screen for license information" msgstr "" -#: fpdb.pyw:245 +#: fpdb.pyw:251 msgid "and others" msgstr "" -#: fpdb.pyw:251 +#: fpdb.pyw:257 msgid "Operating System" msgstr "" -#: fpdb.pyw:271 +#: fpdb.pyw:277 msgid "Your config file is: " msgstr "" -#: fpdb.pyw:276 +#: fpdb.pyw:282 msgid "Version Information:" msgstr "" -#: fpdb.pyw:283 +#: fpdb.pyw:289 msgid "Threads: " msgstr "" -#: fpdb.pyw:306 +#: fpdb.pyw:312 msgid "Updated preferences have not been loaded because windows are open. Re-start fpdb to load them." msgstr "" -#: fpdb.pyw:316 +#: fpdb.pyw:322 msgid "Maintain Databases" msgstr "" -#: fpdb.pyw:326 +#: fpdb.pyw:332 msgid "saving updated db data" msgstr "" -#: fpdb.pyw:333 +#: fpdb.pyw:339 msgid "guidb response was " msgstr "" -#: fpdb.pyw:339 +#: fpdb.pyw:345 msgid "Cannot open Database Maintenance window because other windows have been opened. Re-start fpdb to use this option." msgstr "" -#: fpdb.pyw:342 +#: fpdb.pyw:348 msgid "Number of Hands: " msgstr "" -#: fpdb.pyw:343 +#: fpdb.pyw:349 msgid "" "\n" "Number of Tourneys: " msgstr "" -#: fpdb.pyw:344 +#: fpdb.pyw:350 msgid "" "\n" "Number of TourneyTypes: " msgstr "" -#: fpdb.pyw:345 +#: fpdb.pyw:351 msgid "Database Statistics" msgstr "" -#: fpdb.pyw:354 +#: fpdb.pyw:360 msgid "HUD Configurator - choose category" msgstr "" -#: fpdb.pyw:360 +#: fpdb.pyw:366 msgid "Please select the game category for which you want to configure HUD stats:" msgstr "" -#: fpdb.pyw:412 +#: fpdb.pyw:418 msgid "HUD Configurator - please choose your stats" msgstr "" -#: fpdb.pyw:418 +#: fpdb.pyw:424 msgid "Please choose the stats you wish to use in the below table." msgstr "" -#: fpdb.pyw:422 +#: fpdb.pyw:428 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" -#: fpdb.pyw:426 +#: fpdb.pyw:432 msgid "It is not currently possible to select \"empty\" or anything else to that end." msgstr "" -#: fpdb.pyw:430 +#: fpdb.pyw:436 msgid "To configure things like colouring you will still have to manually edit your HUD_config.xml." msgstr "" -#: fpdb.pyw:537 +#: fpdb.pyw:543 msgid "Confirm deleting and recreating tables" msgstr "" -#: fpdb.pyw:538 +#: fpdb.pyw:544 msgid "Please confirm that you want to (re-)create the tables. If there already are tables in the database " msgstr "" -#: fpdb.pyw:539 +#: fpdb.pyw:545 msgid "" " they will be deleted.\n" "This may take a while." msgstr "" -#: fpdb.pyw:564 +#: fpdb.pyw:570 msgid "User cancelled recreating tables" msgstr "" -#: fpdb.pyw:571 +#: fpdb.pyw:577 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" -#: fpdb.pyw:579 +#: fpdb.pyw:585 msgid " Hero's cache starts: " msgstr "" -#: fpdb.pyw:593 +#: fpdb.pyw:599 msgid " Villains' cache starts: " msgstr "" -#: fpdb.pyw:606 +#: fpdb.pyw:612 msgid " Rebuilding HUD Cache ... " msgstr "" -#: fpdb.pyw:614 +#: fpdb.pyw:620 msgid "User cancelled rebuilding hud cache" msgstr "" -#: fpdb.pyw:626 +#: fpdb.pyw:632 msgid "Confirm rebuilding database indexes" msgstr "" -#: fpdb.pyw:627 +#: fpdb.pyw:633 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" -#: fpdb.pyw:635 +#: fpdb.pyw:641 msgid " Rebuilding Indexes ... " msgstr "" -#: fpdb.pyw:642 +#: fpdb.pyw:648 msgid " Cleaning Database ... " msgstr "" -#: fpdb.pyw:647 +#: fpdb.pyw:653 msgid " Analyzing Database ... " msgstr "" -#: fpdb.pyw:652 +#: fpdb.pyw:658 msgid "User cancelled rebuilding db indexes" msgstr "" -#: fpdb.pyw:747 +#: fpdb.pyw:753 msgid "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" -#: fpdb.pyw:750 +#: fpdb.pyw:756 msgid "Fatal Error - Config File Missing" msgstr "" -#: fpdb.pyw:752 +#: fpdb.pyw:758 msgid "Please copy the config file from the docs folder to:" msgstr "" -#: fpdb.pyw:760 +#: fpdb.pyw:766 msgid "and edit it according to the install documentation at http://fpdb.sourceforge.net" msgstr "" -#: fpdb.pyw:817 +#: fpdb.pyw:823 msgid "_Main" msgstr "" -#: fpdb.pyw:818 fpdb.pyw:846 +#: fpdb.pyw:824 fpdb.pyw:852 msgid "_Quit" msgstr "" -#: fpdb.pyw:819 +#: fpdb.pyw:825 msgid "L" msgstr "" -#: fpdb.pyw:819 +#: fpdb.pyw:825 msgid "_Load Profile (broken)" msgstr "" -#: fpdb.pyw:820 +#: fpdb.pyw:826 msgid "S" msgstr "" -#: fpdb.pyw:820 +#: fpdb.pyw:826 msgid "_Save Profile (todo)" msgstr "" -#: fpdb.pyw:821 +#: fpdb.pyw:827 msgid "F" msgstr "" -#: fpdb.pyw:821 +#: fpdb.pyw:827 msgid "Pre_ferences" msgstr "" -#: fpdb.pyw:822 +#: fpdb.pyw:828 msgid "_Import" msgstr "" -#: fpdb.pyw:823 +#: fpdb.pyw:829 msgid "_Set HandHistory Archive Directory" msgstr "" -#: fpdb.pyw:824 +#: fpdb.pyw:830 msgid "B" msgstr "" -#: fpdb.pyw:824 +#: fpdb.pyw:830 msgid "_Bulk Import" msgstr "" -#: fpdb.pyw:825 +#: fpdb.pyw:831 msgid "I" msgstr "" -#: fpdb.pyw:825 +#: fpdb.pyw:831 msgid "_Import through eMail/IMAP" msgstr "" -#: fpdb.pyw:826 +#: fpdb.pyw:832 msgid "_Viewers" msgstr "" -#: fpdb.pyw:827 +#: fpdb.pyw:833 msgid "A" msgstr "" -#: fpdb.pyw:827 +#: fpdb.pyw:833 msgid "_Auto Import and HUD" msgstr "" -#: fpdb.pyw:828 +#: fpdb.pyw:834 msgid "H" msgstr "" -#: fpdb.pyw:828 +#: fpdb.pyw:834 msgid "_HUD Configurator" msgstr "" -#: fpdb.pyw:829 +#: fpdb.pyw:835 msgid "G" msgstr "" -#: fpdb.pyw:829 +#: fpdb.pyw:835 msgid "_Graphs" msgstr "" -#: fpdb.pyw:830 +#: fpdb.pyw:836 msgid "P" msgstr "" -#: fpdb.pyw:830 +#: fpdb.pyw:836 msgid "Ring _Player Stats (tabulated view)" msgstr "" -#: fpdb.pyw:831 +#: fpdb.pyw:837 msgid "T" msgstr "" -#: fpdb.pyw:831 +#: fpdb.pyw:837 msgid "_Tourney Player Stats (tabulated view)" msgstr "" -#: fpdb.pyw:832 +#: fpdb.pyw:838 msgid "Tourney _Viewer" msgstr "" -#: fpdb.pyw:833 +#: fpdb.pyw:839 msgid "O" msgstr "" -#: fpdb.pyw:833 +#: fpdb.pyw:839 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "" -#: fpdb.pyw:834 fpdb.pyw:1051 +#: fpdb.pyw:840 fpdb.pyw:1057 msgid "Session Stats" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:841 msgid "_Database" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:842 msgid "_Maintain Databases" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:843 msgid "Create or Recreate _Tables" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:844 msgid "Rebuild HUD Cache" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:845 msgid "Rebuild DB Indexes" msgstr "" -#: fpdb.pyw:840 +#: fpdb.pyw:846 msgid "_Statistics" msgstr "" -#: fpdb.pyw:841 +#: fpdb.pyw:847 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "" -#: fpdb.pyw:842 +#: fpdb.pyw:848 msgid "_Help" msgstr "" -#: fpdb.pyw:843 +#: fpdb.pyw:849 msgid "_Log Messages" msgstr "" -#: fpdb.pyw:844 +#: fpdb.pyw:850 msgid "A_bout, License, Copying" msgstr "" -#: fpdb.pyw:862 +#: fpdb.pyw:868 msgid "" "There is an error in your config file\n" msgstr "" -#: fpdb.pyw:863 +#: fpdb.pyw:869 msgid "" "\n" "\n" "Error is: " msgstr "" -#: fpdb.pyw:864 +#: fpdb.pyw:870 msgid "CONFIG FILE ERROR" msgstr "" -#: fpdb.pyw:870 +#: fpdb.pyw:876 msgid "Config file" msgstr "" -#: fpdb.pyw:871 +#: fpdb.pyw:877 msgid "" "has been created at:\n" "%s.\n" msgstr "" -#: fpdb.pyw:872 +#: fpdb.pyw:878 msgid "Edit your screen_name and hand history path in the supported_sites " msgstr "" -#: fpdb.pyw:873 +#: fpdb.pyw:879 msgid "section of the Preferences window (Main menu) before trying to import hands." msgstr "" -#: fpdb.pyw:896 +#: fpdb.pyw:902 msgid "Connected to SQLite: %(database)s" msgstr "" -#: fpdb.pyw:898 -msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" -msgstr "" - -#: fpdb.pyw:900 +#: fpdb.pyw:906 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" -#: fpdb.pyw:901 +#: fpdb.pyw:907 msgid "Please check that the MySQL service has been started" msgstr "" -#: fpdb.pyw:903 -msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" -msgstr "" - -#: fpdb.pyw:905 +#: fpdb.pyw:911 msgid "Postgres client reports: Unable to connect - " msgstr "" -#: fpdb.pyw:906 +#: fpdb.pyw:912 msgid "Please check that the Postgres service has been started" msgstr "" -#: fpdb.pyw:930 +#: fpdb.pyw:936 msgid "Strong Warning - Invalid database version" msgstr "" -#: fpdb.pyw:932 +#: fpdb.pyw:938 msgid "An invalid DB version or missing tables have been detected." msgstr "" -#: fpdb.pyw:936 +#: fpdb.pyw:942 msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu." msgstr "" -#: fpdb.pyw:940 +#: fpdb.pyw:946 msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc." msgstr "" -#: fpdb.pyw:953 +#: fpdb.pyw:959 msgid "Status: Connected to %s database named %s on host %s" msgstr "" -#: fpdb.pyw:963 +#: fpdb.pyw:969 msgid "" "\n" "Global lock taken by" msgstr "" -#: fpdb.pyw:966 +#: fpdb.pyw:972 msgid "" "\n" "Failed to get global lock, it is currently held by" msgstr "" -#: fpdb.pyw:976 +#: fpdb.pyw:982 msgid "Quitting normally" msgstr "" -#: fpdb.pyw:1000 +#: fpdb.pyw:1006 msgid "" "Global lock released.\n" msgstr "" -#: fpdb.pyw:1007 +#: fpdb.pyw:1013 msgid "Auto Import" msgstr "" -#: fpdb.pyw:1014 +#: fpdb.pyw:1020 msgid "Bulk Import" msgstr "" -#: fpdb.pyw:1020 +#: fpdb.pyw:1026 msgid "eMail Import" msgstr "" -#: fpdb.pyw:1027 +#: fpdb.pyw:1033 msgid "Ring Player Stats" msgstr "" -#: fpdb.pyw:1033 +#: fpdb.pyw:1039 msgid "Tourney Player Stats" msgstr "" -#: fpdb.pyw:1039 +#: fpdb.pyw:1045 msgid "Tourney Viewer" msgstr "" -#: fpdb.pyw:1045 +#: fpdb.pyw:1051 msgid "Positional Stats" msgstr "" -#: fpdb.pyw:1055 +#: fpdb.pyw:1061 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n" @@ -1942,40 +2064,60 @@ msgid "" "You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory." msgstr "" -#: fpdb.pyw:1072 +#: fpdb.pyw:1078 msgid "Help" msgstr "" -#: fpdb.pyw:1079 +#: fpdb.pyw:1085 msgid "Graphs" msgstr "" -#: fpdb.pyw:1129 +#: fpdb.pyw:1135 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n" msgstr "" -#: fpdb.pyw:1158 +#: fpdb.pyw:1164 msgid "fpdb starting ..." msgstr "" -#: fpdb.pyw:1207 +#: fpdb.pyw:1213 msgid "FPDB WARNING" msgstr "" -#: fpdb.pyw:1226 +#: fpdb.pyw:1232 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" -#: fpdb.pyw:1234 +#: fpdb.pyw:1240 msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed." msgstr "" -#: fpdb.pyw:1239 +#: fpdb.pyw:1245 msgid "Select HH Output Directory" msgstr "" +#: test_Database.py:50 +msgid "DEBUG: Testing variance function" +msgstr "" + +#: test_Database.py:51 +msgid "DEBUG: result: %s expecting: 0.666666 (result-expecting ~= 0.0): %s" +msgstr "" + +#: windows_make_bats.py:31 +msgid "" +"\n" +"This script is only for windows\n" +msgstr "" + +#: windows_make_bats.py:58 +msgid "" +"\n" +"no gtk directories found in your path - install gtk or edit the path manually\n" +msgstr "" + diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 0501c121..fe71281f 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.904\n" -"POT-Creation-Date: 2010-08-15 06:01+CEST\n" +"POT-Creation-Date: 2010-08-15 20:33+CEST\n" "PO-Revision-Date: 2010-08-15 15:22+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" @@ -51,6 +51,20 @@ msgstr "feldolgozás eredményének helye" msgid "follow (tail -f) the input" msgstr "kövesse a kimenetet (tail -f)" +#: Card.py:159 +msgid "fpdb card encoding(same as pokersource)" +msgstr "" + +#: Charset.py:45 Charset.py:60 Charset.py:75 Charset.py:86 Charset.py:94 +#, fuzzy +msgid "Could not convert: \"%s\"\n" +msgstr "%s fájl nem található" + +#: Charset.py:48 Charset.py:63 Charset.py:78 +#, fuzzy +msgid "Could not encode: \"%s\"\n" +msgstr "%s fájl nem található" + #: Configuration.py:98 msgid "" "No %s found\n" @@ -253,11 +267,11 @@ msgstr "Nem található játék az adatbázisban" msgid " Clear Dates " msgstr "Dátumok törlése" -#: Filters.py:929 fpdb.pyw:713 +#: Filters.py:929 fpdb.pyw:719 msgid "Pick a date" msgstr "Válassz egy dátumot" -#: Filters.py:935 fpdb.pyw:719 +#: Filters.py:935 fpdb.pyw:725 msgid "Done" msgstr "Kész" @@ -499,6 +513,118 @@ msgstr "" "GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" "s másodperc alatt - %.0f/mp" +#: GuiDatabase.py:98 GuiLogView.py:88 +#, fuzzy +msgid "Refresh" +msgstr "Statisztikák f_rissítése" + +#: GuiDatabase.py:103 +msgid "Type" +msgstr "" + +#: GuiDatabase.py:104 +#, fuzzy +msgid "Name" +msgstr "Nincs név" + +#: GuiDatabase.py:105 +msgid "Description" +msgstr "" + +#: GuiDatabase.py:106 GuiImapFetcher.py:111 +msgid "Username" +msgstr "Felhasználónév" + +#: GuiDatabase.py:107 GuiImapFetcher.py:111 +msgid "Password" +msgstr "Jelszó" + +#: GuiDatabase.py:108 +msgid "Host" +msgstr "" + +#: GuiDatabase.py:109 +msgid "Default" +msgstr "" + +#: GuiDatabase.py:110 +msgid "Status" +msgstr "" + +#: GuiDatabase.py:243 +#, fuzzy +msgid "Testing database connections ... " +msgstr " Adatbázis tisztítása ... " + +#: GuiDatabase.py:273 +msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" +msgstr "" + +#: GuiDatabase.py:276 +msgid " connected ok" +msgstr "" + +#: GuiDatabase.py:283 +msgid " not connected but no exception" +msgstr "" + +#: GuiDatabase.py:285 fpdb.pyw:904 +msgid "" +"MySQL Server reports: Access denied. Are your permissions set correctly?" +msgstr "" +"MySQL szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " +"jogosultságaid?" + +#: GuiDatabase.py:289 +#, fuzzy +msgid "" +"MySQL client reports: 2002 or 2003 error. Unable to connect - Please check " +"that the MySQL service has been started" +msgstr "" +"MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " +"- " + +#: GuiDatabase.py:293 fpdb.pyw:909 +msgid "" +"Postgres Server reports: Access denied. Are your permissions set correctly?" +msgstr "" +"Postgres szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " +"jogosultságaid?" + +#: GuiDatabase.py:296 +#, fuzzy +msgid "" +"Postgres client reports: Unable to connect - Please check that the Postgres " +"service has been started" +msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" + +#: GuiDatabase.py:313 +msgid "finished." +msgstr "" + +#: GuiDatabase.py:323 +msgid "loaddbs error: " +msgstr "" + +#: GuiDatabase.py:344 GuiLogView.py:192 GuiTourneyPlayerStats.py:454 +msgid "***sortCols error: " +msgstr "***sortCols hiba: " + +#: GuiDatabase.py:346 +#, fuzzy +msgid "sortCols error: " +msgstr "***sortCols hiba: " + +#: GuiDatabase.py:416 GuiLogView.py:205 +#, fuzzy +msgid "Test Log Viewer" +msgstr "Verseny nézet" + +#: GuiDatabase.py:421 GuiLogView.py:210 +#, fuzzy +msgid "Log Viewer" +msgstr "_Nézetek" + #: GuiGraphViewer.py:39 msgid "" "Failed to load libs for graphing, graphing will not function. Please\n" @@ -630,10 +756,6 @@ msgstr "Levelek mappája" msgid "Mailserver" msgstr "Levelezőkiszolgáló" -#: GuiImapFetcher.py:111 -msgid "Password" -msgstr "Jelszó" - #: GuiImapFetcher.py:111 msgid "Site" msgstr "Terem" @@ -642,10 +764,6 @@ msgstr "Terem" msgid "Use SSL" msgstr "SSL használata" -#: GuiImapFetcher.py:111 -msgid "Username" -msgstr "Felhasználónév" - #: GuiImapFetcher.py:142 msgid "Yes" msgstr "Igen" @@ -654,6 +772,11 @@ msgstr "Igen" msgid "No" msgstr "Nem" +#: GuiLogView.py:53 +#, fuzzy +msgid "Log Messages" +msgstr "Nap_lóbejegyzések" + #: GuiPositionalStats.py:135 msgid "DEBUG: activesite set to %s" msgstr "DEBUG: aktív terem: %s" @@ -674,7 +797,7 @@ msgstr "Érték (kattints duplán a módosításhoz)" msgid "Test Preferences Dialog" msgstr "Beállítási párbeszéd (teszt)" -#: GuiPrefs.py:181 fpdb.pyw:288 +#: GuiPrefs.py:181 fpdb.pyw:294 msgid "Preferences" msgstr "Beállítások" @@ -706,10 +829,6 @@ msgstr "Sessionök" msgid "_Refresh Stats" msgstr "Statisztikák f_rissítése" -#: GuiTourneyPlayerStats.py:454 -msgid "***sortCols error: " -msgstr "***sortCols hiba: " - #: GuiTourneyViewer.py:37 msgid "Enter the tourney number you want to display:" msgstr "Add meg a megjelenítendő verseny azonosítóját" @@ -754,7 +873,7 @@ msgstr "" "\n" "HUD_main: indítás ..." -#: HUD_main.pyw:80 fpdb.pyw:868 +#: HUD_main.pyw:80 fpdb.pyw:874 msgid "Logfile is " msgstr "A naplófájl " @@ -766,7 +885,7 @@ msgstr "HUD_main indítás: " msgid "Note: error output is being diverted to:\n" msgstr "Megjegyzés: a hibakimenet ide van átirányítva:\n" -#: HUD_main.pyw:87 fpdb.pyw:1130 +#: HUD_main.pyw:87 fpdb.pyw:1136 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1501,6 +1620,18 @@ msgstr "Verzióinformáció kiírása, majd kilépés." msgid "press enter to end" msgstr "nyomj ENTER-t a befejezéshez" +#: P5sResultsParser.py:10 +msgid "You need to manually enter the playername" +msgstr "" + +#: PokerStarsSummary.py:72 +msgid "didn't recognise buyin currency in:" +msgstr "" + +#: PokerStarsSummary.py:112 +msgid "in not result starttime" +msgstr "" + #: PokerStarsToFpdb.py:172 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" @@ -1529,11 +1660,33 @@ msgstr "readButton: nem található" msgid "reading antes" msgstr "antek olvasása" -#: fpdb.pyw:40 +#: Tables_Demo.py:64 +#, fuzzy +msgid "Fake HUD Main Window" +msgstr "HUD Főablak" + +#: Tables_Demo.py:87 +msgid "enter table name to find: " +msgstr "" + +#: Tables_Demo.py:112 +msgid "calling main" +msgstr "" + +#: WinTables.py:70 +#, fuzzy +msgid "Window %s not found. Skipping." +msgstr "HUD létrehozás: %s nevű asztal nincs meg, kihagyás." + +#: WinTables.py:73 +msgid "self.window doesn't exist? why?" +msgstr "" + +#: fpdb.pyw:46 msgid " - press return to continue\n" msgstr " - nyomj ENTER-t a folytatáshoz\n" -#: fpdb.pyw:47 +#: fpdb.pyw:53 msgid "" "\n" "python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" @@ -1542,11 +1695,11 @@ msgstr "" "Python 2.5 nincs meg, kérlek telepítsd a Python 2.5-öt, 2.6-ot, vagy 2.7-et " "az fpdb számára\n" -#: fpdb.pyw:48 fpdb.pyw:60 fpdb.pyw:82 +#: fpdb.pyw:54 fpdb.pyw:66 fpdb.pyw:88 msgid "Press ENTER to continue." msgstr "Nyomj ENTER-t a folytatáshoz." -#: fpdb.pyw:59 +#: fpdb.pyw:65 msgid "" "We appear to be running in Windows, but the Windows Python Extensions are " "not loading. Please install the PYWIN32 package from http://sourceforge.net/" @@ -1556,7 +1709,7 @@ msgstr "" "Bővítmények nem töltődnek be. Kérlek telepítsd a PYWIN32 csomagot innen: " "http://sourceforge.net/projects/pywin32/" -#: fpdb.pyw:81 +#: fpdb.pyw:87 msgid "" "Unable to load PYGTK modules required for GUI. Please install PyCairo, " "PyGObject, and PyGTK from www.pygtk.org." @@ -1564,7 +1717,7 @@ msgstr "" "Nem sikerült a GUI által igényelt PyGTK modulok betöltése. Kérlek telepítsd " "a PyCairo-t, a PyGObject-et és a PyGTK-t a www.pygtk.org címről." -#: fpdb.pyw:239 +#: fpdb.pyw:245 msgid "" "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, " "sqlcoder, Bostik, and others" @@ -1572,7 +1725,7 @@ msgstr "" "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, " "sqlcoder, Bostik, and others" -#: fpdb.pyw:240 +#: fpdb.pyw:246 msgid "" "You are free to change, and distribute original or changed versions of fpdb " "within the rules set out by the license" @@ -1580,31 +1733,31 @@ msgstr "" "Szabadon megváltoztathatod és terjesztheted az eredeti vagy már " "megváltoztatott fpdb verziókat a licenszben szabályozott feltételek mellett" -#: fpdb.pyw:241 +#: fpdb.pyw:247 msgid "Please see fpdb's start screen for license information" msgstr "Licensz információkért kérlek tekintsd meg az fpdb induló képernyőjét" -#: fpdb.pyw:245 +#: fpdb.pyw:251 msgid "and others" msgstr "és mások" -#: fpdb.pyw:251 +#: fpdb.pyw:257 msgid "Operating System" msgstr "Operációs rendszer" -#: fpdb.pyw:271 +#: fpdb.pyw:277 msgid "Your config file is: " msgstr "Konfigurációs fájl:" -#: fpdb.pyw:276 +#: fpdb.pyw:282 msgid "Version Information:" msgstr "Verzióinformáció:" -#: fpdb.pyw:283 +#: fpdb.pyw:289 msgid "Threads: " msgstr "Szálak:" -#: fpdb.pyw:306 +#: fpdb.pyw:312 msgid "" "Updated preferences have not been loaded because windows are open. Re-start " "fpdb to load them." @@ -1612,19 +1765,19 @@ msgstr "" "A megváltoztatott beállítások még nem léptek érvénybe, mert vannak nyitott " "ablakok. Indítsd újra az fpdb-t az érvénybe léptetésükhöz." -#: fpdb.pyw:316 +#: fpdb.pyw:322 msgid "Maintain Databases" msgstr "Adatbázisok karbantartása" -#: fpdb.pyw:326 +#: fpdb.pyw:332 msgid "saving updated db data" msgstr "frissített adatbázis adatok mentése" -#: fpdb.pyw:333 +#: fpdb.pyw:339 msgid "guidb response was " msgstr "a guidb válasza ez volt: " -#: fpdb.pyw:339 +#: fpdb.pyw:345 msgid "" "Cannot open Database Maintenance window because other windows have been " "opened. Re-start fpdb to use this option." @@ -1632,11 +1785,11 @@ msgstr "" "Nem tudom megnyitni az adatbázis karbantartó ablakot, mert más ablakok is " "nyitva vannak. Indítsd újra az fpdb-t ezen funkció használatához." -#: fpdb.pyw:342 +#: fpdb.pyw:348 msgid "Number of Hands: " msgstr "Leosztások száma:" -#: fpdb.pyw:343 +#: fpdb.pyw:349 msgid "" "\n" "Number of Tourneys: " @@ -1644,7 +1797,7 @@ msgstr "" "\n" "Versenyek száma: " -#: fpdb.pyw:344 +#: fpdb.pyw:350 msgid "" "\n" "Number of TourneyTypes: " @@ -1652,40 +1805,40 @@ msgstr "" "\n" "Versenytípusok száma: " -#: fpdb.pyw:345 +#: fpdb.pyw:351 msgid "Database Statistics" msgstr "Adatbázis statisztikák" -#: fpdb.pyw:354 +#: fpdb.pyw:360 msgid "HUD Configurator - choose category" msgstr "HUD beállító - válassz kategóriát" -#: fpdb.pyw:360 +#: fpdb.pyw:366 msgid "" "Please select the game category for which you want to configure HUD stats:" msgstr "Válassz játéktípust, amelyre vonatkozóan akarod beállítani a HUD-ot:" -#: fpdb.pyw:412 +#: fpdb.pyw:418 msgid "HUD Configurator - please choose your stats" msgstr "HUD beállító - válassz statisztikákat" -#: fpdb.pyw:418 +#: fpdb.pyw:424 msgid "Please choose the stats you wish to use in the below table." msgstr "Válaszd ki a lenti táblázatból a megjelenítendő statisztikákat." -#: fpdb.pyw:422 +#: fpdb.pyw:428 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" "Vedd figyelembe, hogy egy statisztikát nem választhatsz ki többször, " "különben ki fog lépni." -#: fpdb.pyw:426 +#: fpdb.pyw:432 msgid "" "It is not currently possible to select \"empty\" or anything else to that " "end." msgstr "Jelenleg nem lehetséges olyat választani, hogy \"üres\" vagy hasonló." -#: fpdb.pyw:430 +#: fpdb.pyw:436 msgid "" "To configure things like colouring you will still have to manually edit your " "HUD_config.xml." @@ -1693,11 +1846,11 @@ msgstr "" "Bizonyos dolgok, mint pl. a színezés beállításához egyelőre még kézzel kell " "szerkesztened a HUD_config.xml fájlt." -#: fpdb.pyw:537 +#: fpdb.pyw:543 msgid "Confirm deleting and recreating tables" msgstr "Erősítsd meg a táblák törlését és újra létrehozását" -#: fpdb.pyw:538 +#: fpdb.pyw:544 msgid "" "Please confirm that you want to (re-)create the tables. If there already are " "tables in the database " @@ -1705,7 +1858,7 @@ msgstr "" "Kérlek erősítsd meg, hogy valóban (újra) létre akarod hozni a táblákat. Ha " "már vannak táblák az adatbázisban," -#: fpdb.pyw:539 +#: fpdb.pyw:545 msgid "" " they will be deleted.\n" "This may take a while." @@ -1713,72 +1866,72 @@ msgstr "" " akkor azok törölve lesznek.\n" "Ez eltarthat egy darabig." -#: fpdb.pyw:564 +#: fpdb.pyw:570 msgid "User cancelled recreating tables" msgstr "A felhasználó mégsem generálja újra a táblákat." -#: fpdb.pyw:571 +#: fpdb.pyw:577 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod generálni a HUD gyorstárat." -#: fpdb.pyw:579 +#: fpdb.pyw:585 msgid " Hero's cache starts: " msgstr " Saját gyorstár innentől: " -#: fpdb.pyw:593 +#: fpdb.pyw:599 msgid " Villains' cache starts: " msgstr " Ellenfelek gyorstár-e innentől: " -#: fpdb.pyw:606 +#: fpdb.pyw:612 msgid " Rebuilding HUD Cache ... " msgstr " HUD gyorstár újraépítése ... " -#: fpdb.pyw:614 +#: fpdb.pyw:620 msgid "User cancelled rebuilding hud cache" msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." -#: fpdb.pyw:626 +#: fpdb.pyw:632 msgid "Confirm rebuilding database indexes" msgstr "Erősítsd meg az adatbázis indexeinek újraépítését" -#: fpdb.pyw:627 +#: fpdb.pyw:633 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod építeni az adatbázis indexeit." -#: fpdb.pyw:635 +#: fpdb.pyw:641 msgid " Rebuilding Indexes ... " msgstr " Indexek újraépítése ... " -#: fpdb.pyw:642 +#: fpdb.pyw:648 msgid " Cleaning Database ... " msgstr " Adatbázis tisztítása ... " -#: fpdb.pyw:647 +#: fpdb.pyw:653 msgid " Analyzing Database ... " msgstr " Adatbázis elemzése ... " -#: fpdb.pyw:652 +#: fpdb.pyw:658 msgid "User cancelled rebuilding db indexes" msgstr "A felhasználó megszakította az adatbázis indexeinek újraépítését." -#: fpdb.pyw:747 +#: fpdb.pyw:753 msgid "" "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" "Még nincs kész: Profil mentése (próbáld meg addig is ehelyett elmenteni a " "HUD elrendezését)" -#: fpdb.pyw:750 +#: fpdb.pyw:756 msgid "Fatal Error - Config File Missing" msgstr "Végzetes hiba - Hiányzó konfigurációs fájl" -#: fpdb.pyw:752 +#: fpdb.pyw:758 msgid "Please copy the config file from the docs folder to:" msgstr "Kérlek másold át a konfigurációs fájlt a docs könyvtárból ide:" -#: fpdb.pyw:760 +#: fpdb.pyw:766 msgid "" "and edit it according to the install documentation at http://fpdb." "sourceforge.net" @@ -1786,167 +1939,167 @@ msgstr "" "majd szerkeszd a http://fpdb.sourceforge.net címen található telepítési " "útmutató szerint" -#: fpdb.pyw:817 +#: fpdb.pyw:823 msgid "_Main" msgstr "_Főmenü" -#: fpdb.pyw:818 fpdb.pyw:846 +#: fpdb.pyw:824 fpdb.pyw:852 msgid "_Quit" msgstr "_Kilépés" -#: fpdb.pyw:819 +#: fpdb.pyw:825 msgid "L" msgstr "L" -#: fpdb.pyw:819 +#: fpdb.pyw:825 msgid "_Load Profile (broken)" msgstr "Profil betö_ltése (hibás)" -#: fpdb.pyw:820 +#: fpdb.pyw:826 msgid "S" msgstr "S" -#: fpdb.pyw:820 +#: fpdb.pyw:826 msgid "_Save Profile (todo)" msgstr "Profil menté_se (todo)" -#: fpdb.pyw:821 +#: fpdb.pyw:827 msgid "F" msgstr "F" -#: fpdb.pyw:821 +#: fpdb.pyw:827 msgid "Pre_ferences" msgstr "_Beállítások" -#: fpdb.pyw:822 +#: fpdb.pyw:828 msgid "_Import" msgstr "_Importálás" -#: fpdb.pyw:823 +#: fpdb.pyw:829 msgid "_Set HandHistory Archive Directory" msgstr "Leo_sztástörténet archívumának könyvtára" -#: fpdb.pyw:824 +#: fpdb.pyw:830 msgid "B" msgstr "B" -#: fpdb.pyw:824 +#: fpdb.pyw:830 msgid "_Bulk Import" msgstr "_Tömeges importálás" -#: fpdb.pyw:825 +#: fpdb.pyw:831 msgid "I" msgstr "I" -#: fpdb.pyw:825 +#: fpdb.pyw:831 msgid "_Import through eMail/IMAP" msgstr "Email _import (IMAP)" -#: fpdb.pyw:826 +#: fpdb.pyw:832 msgid "_Viewers" msgstr "_Nézetek" -#: fpdb.pyw:827 +#: fpdb.pyw:833 msgid "A" msgstr "A" -#: fpdb.pyw:827 +#: fpdb.pyw:833 msgid "_Auto Import and HUD" msgstr "_AutoImport és HUD" -#: fpdb.pyw:828 +#: fpdb.pyw:834 msgid "H" msgstr "H" -#: fpdb.pyw:828 +#: fpdb.pyw:834 msgid "_HUD Configurator" msgstr "_HUD beállító" -#: fpdb.pyw:829 +#: fpdb.pyw:835 msgid "G" msgstr "G" -#: fpdb.pyw:829 +#: fpdb.pyw:835 msgid "_Graphs" msgstr "_Grafikonok" -#: fpdb.pyw:830 +#: fpdb.pyw:836 msgid "P" msgstr "P" -#: fpdb.pyw:830 +#: fpdb.pyw:836 msgid "Ring _Player Stats (tabulated view)" msgstr "Kész_pénzes játékos statisztikák (táblázatos nézet)" -#: fpdb.pyw:831 +#: fpdb.pyw:837 msgid "T" msgstr "T" -#: fpdb.pyw:831 +#: fpdb.pyw:837 msgid "_Tourney Player Stats (tabulated view)" msgstr "Versenyjá_tékos statisztikák (táblázatos nézet)" -#: fpdb.pyw:832 +#: fpdb.pyw:838 msgid "Tourney _Viewer" msgstr "_Verseny nézet" -#: fpdb.pyw:833 +#: fpdb.pyw:839 msgid "O" msgstr "O" -#: fpdb.pyw:833 +#: fpdb.pyw:839 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "P_ozíciós statisztikák (táblázatos nézet, SQLite-tal nem megy)" -#: fpdb.pyw:834 fpdb.pyw:1051 +#: fpdb.pyw:840 fpdb.pyw:1057 msgid "Session Stats" msgstr "Session statisztikák" -#: fpdb.pyw:835 +#: fpdb.pyw:841 msgid "_Database" msgstr "A_datbázis" -#: fpdb.pyw:836 +#: fpdb.pyw:842 msgid "_Maintain Databases" msgstr "_Karbantartás" -#: fpdb.pyw:837 +#: fpdb.pyw:843 msgid "Create or Recreate _Tables" msgstr "_Táblák létrehozása vagy újragenerálása" -#: fpdb.pyw:838 +#: fpdb.pyw:844 msgid "Rebuild HUD Cache" msgstr "HUD gyorstár újraépítése" -#: fpdb.pyw:839 +#: fpdb.pyw:845 msgid "Rebuild DB Indexes" msgstr "Adatbázis indexek újraépítése" -#: fpdb.pyw:840 +#: fpdb.pyw:846 msgid "_Statistics" msgstr "_Statisztikák" -#: fpdb.pyw:841 +#: fpdb.pyw:847 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "Adatbázis exportálása textfájlba (SOKÁIG tart)" -#: fpdb.pyw:842 +#: fpdb.pyw:848 msgid "_Help" msgstr "_Súgó" -#: fpdb.pyw:843 +#: fpdb.pyw:849 msgid "_Log Messages" msgstr "Nap_lóbejegyzések" -#: fpdb.pyw:844 +#: fpdb.pyw:850 msgid "A_bout, License, Copying" msgstr "_Névjegy, licensz, másolás" -#: fpdb.pyw:862 +#: fpdb.pyw:868 msgid "There is an error in your config file\n" msgstr "Hiba van a konfigurációs fájlodban\n" -#: fpdb.pyw:863 +#: fpdb.pyw:869 msgid "" "\n" "\n" @@ -1956,15 +2109,15 @@ msgstr "" "\n" "A hiba a következő: " -#: fpdb.pyw:864 +#: fpdb.pyw:870 msgid "CONFIG FILE ERROR" msgstr "KONFIGURÁCIÓS FÁJL HIBA" -#: fpdb.pyw:870 +#: fpdb.pyw:876 msgid "Config file" msgstr "Konfigurációs fájl" -#: fpdb.pyw:871 +#: fpdb.pyw:877 msgid "" "has been created at:\n" "%s.\n" @@ -1972,64 +2125,50 @@ msgstr "" "létrehozva itt:\n" "%s.\n" -#: fpdb.pyw:872 +#: fpdb.pyw:878 msgid "Edit your screen_name and hand history path in the supported_sites " msgstr "" "Állítsd be az asztalnál látható nevedet és a leosztástörténetek helyét a " "támogatott termek" -#: fpdb.pyw:873 +#: fpdb.pyw:879 msgid "" "section of the Preferences window (Main menu) before trying to import hands." msgstr "" "résznél a Beállítások ablakban (Főmenü) mielőtt megpróbálnál leosztásokat " "importálni." -#: fpdb.pyw:896 +#: fpdb.pyw:902 msgid "Connected to SQLite: %(database)s" msgstr "Kapcsolódva a %(database)s SQLite adatbázishoz" -#: fpdb.pyw:898 -msgid "" -"MySQL Server reports: Access denied. Are your permissions set correctly?" -msgstr "" -"MySQL szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " -"jogosultságaid?" - -#: fpdb.pyw:900 +#: fpdb.pyw:906 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " "- " -#: fpdb.pyw:901 +#: fpdb.pyw:907 msgid "Please check that the MySQL service has been started" msgstr "Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" -#: fpdb.pyw:903 -msgid "" -"Postgres Server reports: Access denied. Are your permissions set correctly?" -msgstr "" -"Postgres szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " -"jogosultságaid?" - -#: fpdb.pyw:905 +#: fpdb.pyw:911 msgid "Postgres client reports: Unable to connect - " msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " -#: fpdb.pyw:906 +#: fpdb.pyw:912 msgid "Please check that the Postgres service has been started" msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" -#: fpdb.pyw:930 +#: fpdb.pyw:936 msgid "Strong Warning - Invalid database version" msgstr "Nyomatékos figyelmeztetés - Érvénytelen adatbázis verzió" -#: fpdb.pyw:932 +#: fpdb.pyw:938 msgid "An invalid DB version or missing tables have been detected." msgstr "Érvénytelen adatbázis verziót vagy hiányzó táblá(ka)t találtam." -#: fpdb.pyw:936 +#: fpdb.pyw:942 msgid "" "This error is not necessarily fatal but it is strongly recommended that you " "recreate the tables by using the Database menu." @@ -2037,7 +2176,7 @@ msgstr "" "Ez a hiba nem feltétlenül végzetes, de erősen javasolt a táblák " "újragenerálása az Adatbázis menü használatával." -#: fpdb.pyw:940 +#: fpdb.pyw:946 msgid "" "Not doing this will likely lead to misbehaviour including fpdb crashes, " "corrupt data etc." @@ -2046,61 +2185,61 @@ msgstr "" "kiléphet, tönkretehet adatokat, stb." # FIXME: would need a different word ordering in Hungarian -#: fpdb.pyw:953 +#: fpdb.pyw:959 msgid "Status: Connected to %s database named %s on host %s" msgstr "" "Állapot: Kapcsolódva a(z) %s adatbázis-kezelő %s nevű adatbázisához a(z) %s " "kiszolgálón" -#: fpdb.pyw:963 +#: fpdb.pyw:969 msgid "" "\n" "Global lock taken by" msgstr "Globális zárolást végzett:" -#: fpdb.pyw:966 +#: fpdb.pyw:972 msgid "" "\n" "Failed to get global lock, it is currently held by" msgstr "Globális zárolás meghiúsult, jelenleg már zárolta:" -#: fpdb.pyw:976 +#: fpdb.pyw:982 msgid "Quitting normally" msgstr "Normál kilépés" -#: fpdb.pyw:1000 +#: fpdb.pyw:1006 msgid "Global lock released.\n" msgstr "Globális zárolás feloldva.\n" -#: fpdb.pyw:1007 +#: fpdb.pyw:1013 msgid "Auto Import" msgstr "AutoImport" -#: fpdb.pyw:1014 +#: fpdb.pyw:1020 msgid "Bulk Import" msgstr "Tömeges import" -#: fpdb.pyw:1020 +#: fpdb.pyw:1026 msgid "eMail Import" msgstr "Email import" -#: fpdb.pyw:1027 +#: fpdb.pyw:1033 msgid "Ring Player Stats" msgstr "Készpénzes játékos statisztikák" -#: fpdb.pyw:1033 +#: fpdb.pyw:1039 msgid "Tourney Player Stats" msgstr "Versenyjátékos statisztikák" -#: fpdb.pyw:1039 +#: fpdb.pyw:1045 msgid "Tourney Viewer" msgstr "Verseny nézet" -#: fpdb.pyw:1045 +#: fpdb.pyw:1051 msgid "Positional Stats" msgstr "Pozíciós statisztikák" -#: fpdb.pyw:1055 +#: fpdb.pyw:1061 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in " @@ -2159,15 +2298,15 @@ msgstr "" "A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" "2.0.txt, gpl-3.0.txt és mit.txt fájlokban." -#: fpdb.pyw:1072 +#: fpdb.pyw:1078 msgid "Help" msgstr "Súgó" -#: fpdb.pyw:1079 +#: fpdb.pyw:1085 msgid "Graphs" msgstr "Grafikonok" -#: fpdb.pyw:1129 +#: fpdb.pyw:1135 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " @@ -2177,15 +2316,15 @@ msgstr "" "Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " "fájlokba itt:\n" -#: fpdb.pyw:1158 +#: fpdb.pyw:1164 msgid "fpdb starting ..." msgstr "fpdb indítása ..." -#: fpdb.pyw:1207 +#: fpdb.pyw:1213 msgid "FPDB WARNING" msgstr "FPDB FIGYELMEZTETÉS" -#: fpdb.pyw:1226 +#: fpdb.pyw:1232 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" @@ -2196,7 +2335,7 @@ msgstr "" " Kattints az IGEN gombra a könyvtár létrehozásához, vagy a NEM gombra egy " "másik könyvtár választásához." -#: fpdb.pyw:1234 +#: fpdb.pyw:1240 msgid "" "WARNING: Unable to create hand output directory. Importing is not likely to " "work until this is fixed." @@ -2204,6 +2343,27 @@ msgstr "" "FIGYELEM: Nem sikerült a leosztásarchívum könyvtárának létrehozása. Az " "importálás valószínűleg nem fog működni." -#: fpdb.pyw:1239 +#: fpdb.pyw:1245 msgid "Select HH Output Directory" msgstr "Válaszd ki a leosztásarchívum könyvtárát" + +#: test_Database.py:50 +msgid "DEBUG: Testing variance function" +msgstr "" + +#: test_Database.py:51 +msgid "DEBUG: result: %s expecting: 0.666666 (result-expecting ~= 0.0): %s" +msgstr "" + +#: windows_make_bats.py:31 +msgid "" +"\n" +"This script is only for windows\n" +msgstr "" + +#: windows_make_bats.py:58 +msgid "" +"\n" +"no gtk directories found in your path - install gtk or edit the path " +"manually\n" +msgstr "" From 3ec334e93c7e08ee3e5b8c1cdad627c555fb81b7 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Sun, 15 Aug 2010 20:46:50 +0200 Subject: [PATCH 125/641] l10n: updated Hungarian translation --- pyfpdb/locale/fpdb-hu_HU.po | 83 +++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 44 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index fe71281f..2dfd9f7c 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.904\n" "POT-Creation-Date: 2010-08-15 20:33+CEST\n" -"PO-Revision-Date: 2010-08-15 15:22+0200\n" +"PO-Revision-Date: 2010-08-15 20:46+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" @@ -53,17 +53,15 @@ msgstr "kövesse a kimenetet (tail -f)" #: Card.py:159 msgid "fpdb card encoding(same as pokersource)" -msgstr "" +msgstr "fpdb kártyakódolás (ugyanaz, mint amit a pokersource használ)" #: Charset.py:45 Charset.py:60 Charset.py:75 Charset.py:86 Charset.py:94 -#, fuzzy msgid "Could not convert: \"%s\"\n" -msgstr "%s fájl nem található" +msgstr "Nem sikerült konvertálni: \"%s\"\n" #: Charset.py:48 Charset.py:63 Charset.py:78 -#, fuzzy msgid "Could not encode: \"%s\"\n" -msgstr "%s fájl nem található" +msgstr "Nem sikerült kódolni: \"%s\"\n" #: Configuration.py:98 msgid "" @@ -514,22 +512,20 @@ msgstr "" "s másodperc alatt - %.0f/mp" #: GuiDatabase.py:98 GuiLogView.py:88 -#, fuzzy msgid "Refresh" -msgstr "Statisztikák f_rissítése" +msgstr "Frissítés" #: GuiDatabase.py:103 msgid "Type" -msgstr "" +msgstr "Típus" #: GuiDatabase.py:104 -#, fuzzy msgid "Name" -msgstr "Nincs név" +msgstr "Név" #: GuiDatabase.py:105 msgid "Description" -msgstr "" +msgstr "Leírás" #: GuiDatabase.py:106 GuiImapFetcher.py:111 msgid "Username" @@ -541,32 +537,31 @@ msgstr "Jelszó" #: GuiDatabase.py:108 msgid "Host" -msgstr "" +msgstr "Kiszolgáló" #: GuiDatabase.py:109 msgid "Default" -msgstr "" +msgstr "Alapértelmezett" #: GuiDatabase.py:110 msgid "Status" -msgstr "" +msgstr "Állapot" #: GuiDatabase.py:243 -#, fuzzy msgid "Testing database connections ... " -msgstr " Adatbázis tisztítása ... " +msgstr "Adatbázis-kapcsolatok ellenőrzése ..." #: GuiDatabase.py:273 msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" -msgstr "" +msgstr "loaddbs: kapcolódási próbálkozás: %s/%s, %s, %s/%s" #: GuiDatabase.py:276 msgid " connected ok" -msgstr "" +msgstr " kapcsolódás OK" #: GuiDatabase.py:283 msgid " not connected but no exception" -msgstr "" +msgstr " nem kapcsolódott, de nincs hibaüzenet" #: GuiDatabase.py:285 fpdb.pyw:904 msgid "" @@ -576,13 +571,12 @@ msgstr "" "jogosultságaid?" #: GuiDatabase.py:289 -#, fuzzy msgid "" "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check " "that the MySQL service has been started" msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " -"- " +"- Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" #: GuiDatabase.py:293 fpdb.pyw:909 msgid "" @@ -592,38 +586,36 @@ msgstr "" "jogosultságaid?" #: GuiDatabase.py:296 -#, fuzzy msgid "" "Postgres client reports: Unable to connect - Please check that the Postgres " "service has been started" -msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" +msgstr "" +"Postgres kliens jelenti: Nem sikerült a kapcsolódás. .Kérlek ellenőrizd, " +"hogy a Postgres szolgáltatás el van-e indítva" #: GuiDatabase.py:313 msgid "finished." -msgstr "" +msgstr "befejezve." #: GuiDatabase.py:323 msgid "loaddbs error: " -msgstr "" +msgstr "loaddbs hiba: " #: GuiDatabase.py:344 GuiLogView.py:192 GuiTourneyPlayerStats.py:454 msgid "***sortCols error: " msgstr "***sortCols hiba: " #: GuiDatabase.py:346 -#, fuzzy msgid "sortCols error: " -msgstr "***sortCols hiba: " +msgstr "sortCols hiba: " #: GuiDatabase.py:416 GuiLogView.py:205 -#, fuzzy msgid "Test Log Viewer" -msgstr "Verseny nézet" +msgstr "Napló böngésző (teszt)" #: GuiDatabase.py:421 GuiLogView.py:210 -#, fuzzy msgid "Log Viewer" -msgstr "_Nézetek" +msgstr "Napló böngésző" #: GuiGraphViewer.py:39 msgid "" @@ -773,7 +765,6 @@ msgid "No" msgstr "Nem" #: GuiLogView.py:53 -#, fuzzy msgid "Log Messages" msgstr "Nap_lóbejegyzések" @@ -1622,15 +1613,15 @@ msgstr "nyomj ENTER-t a befejezéshez" #: P5sResultsParser.py:10 msgid "You need to manually enter the playername" -msgstr "" +msgstr "Meg kell adnod a játékos nevét" #: PokerStarsSummary.py:72 msgid "didn't recognise buyin currency in:" -msgstr "" +msgstr "nem sikerült felismerni a beülő pénznemét ebben:" #: PokerStarsSummary.py:112 msgid "in not result starttime" -msgstr "" +msgstr "a starttime nem található részében" #: PokerStarsToFpdb.py:172 msgid "determineGameType: Unable to recognise gametype from: '%s'" @@ -1661,26 +1652,24 @@ msgid "reading antes" msgstr "antek olvasása" #: Tables_Demo.py:64 -#, fuzzy msgid "Fake HUD Main Window" -msgstr "HUD Főablak" +msgstr "Kamu HUD Főablak" #: Tables_Demo.py:87 msgid "enter table name to find: " -msgstr "" +msgstr "add meg a keresendő asztalnevet: " #: Tables_Demo.py:112 msgid "calling main" -msgstr "" +msgstr "main hívása" #: WinTables.py:70 -#, fuzzy msgid "Window %s not found. Skipping." -msgstr "HUD létrehozás: %s nevű asztal nincs meg, kihagyás." +msgstr "A(z) %s nevű ablak nincs meg. Kihagyás." #: WinTables.py:73 msgid "self.window doesn't exist? why?" -msgstr "" +msgstr "self.window nem létezik? miért?" #: fpdb.pyw:46 msgid " - press return to continue\n" @@ -2349,17 +2338,20 @@ msgstr "Válaszd ki a leosztásarchívum könyvtárát" #: test_Database.py:50 msgid "DEBUG: Testing variance function" -msgstr "" +msgstr "DEBUG: Varianciafügvény tesztelésa" #: test_Database.py:51 msgid "DEBUG: result: %s expecting: 0.666666 (result-expecting ~= 0.0): %s" msgstr "" +"DEBUG: eredmény: %s várt érték: 0.666666. (eredmény - várt érték ~= 0.0): %s" #: windows_make_bats.py:31 msgid "" "\n" "This script is only for windows\n" msgstr "" +"\n" +"Ez a szkript csak windowson használható\n" #: windows_make_bats.py:58 msgid "" @@ -2367,3 +2359,6 @@ msgid "" "no gtk directories found in your path - install gtk or edit the path " "manually\n" msgstr "" +"\n" +"Nem találhatóak a GTK könyvtárak az útvonaladban - telepítsd a GTK-t, vagy " +"állítsd be kézzel az útvonalat\n" From b4317bba2ad2a216d4b82739ff9e799e0aa26cfe Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 20:50:49 +0200 Subject: [PATCH 126/641] auto-detect language --- pyfpdb/Anonymise.py | 15 ++++++++++++--- pyfpdb/BetfairToFpdb.py | 15 ++++++++++++--- pyfpdb/Card.py | 15 ++++++++++++--- pyfpdb/GuiBulkImport.py | 15 ++++++++++++--- pyfpdb/GuiDatabase.py | 15 ++++++++++++--- pyfpdb/GuiLogView.py | 15 ++++++++++++--- pyfpdb/HUD_main.pyw | 15 ++++++++++++--- pyfpdb/HandHistoryConverter.py | 15 ++++++++++++--- pyfpdb/ImapFetcher.py | 15 ++++++++++++--- pyfpdb/Options.py | 15 ++++++++++++--- pyfpdb/Tables_Demo.py | 15 ++++++++++++--- pyfpdb/fpdb.pyw | 15 ++++++++++++--- pyfpdb/locale/{de_DE => de}/LC_MESSAGES/fpdb.mo | Bin pyfpdb/windows_make_bats.py | 15 ++++++++++++--- 14 files changed, 156 insertions(+), 39 deletions(-) rename pyfpdb/locale/{de_DE => de}/LC_MESSAGES/fpdb.mo (100%) diff --git a/pyfpdb/Anonymise.py b/pyfpdb/Anonymise.py index a4d72339..32878900 100755 --- a/pyfpdb/Anonymise.py +++ b/pyfpdb/Anonymise.py @@ -23,9 +23,18 @@ import HandHistoryConverter import Configuration import sys -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string (options, argv) = Options.fpdb_options() config = Configuration.Config() diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index 34316de2..4a5f8b5c 100755 --- a/pyfpdb/BetfairToFpdb.py +++ b/pyfpdb/BetfairToFpdb.py @@ -22,9 +22,18 @@ import sys import logging from HandHistoryConverter import * -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string # Betfair HH format diff --git a/pyfpdb/Card.py b/pyfpdb/Card.py index 81edfb9c..6bdf3e8b 100755 --- a/pyfpdb/Card.py +++ b/pyfpdb/Card.py @@ -15,9 +15,18 @@ #along with this program. If not, see . #In the "official" distribution you can find the license in agpl-3.0.txt. -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string # From fpdb_simple card_map = { "0": 0, "2": 2, "3" : 3, "4" : 4, "5" : 5, "6" : 6, "7" : 7, "8" : 8, diff --git a/pyfpdb/GuiBulkImport.py b/pyfpdb/GuiBulkImport.py index a40f8929..e7132018 100755 --- a/pyfpdb/GuiBulkImport.py +++ b/pyfpdb/GuiBulkImport.py @@ -33,9 +33,18 @@ import fpdb_import import Configuration import Exceptions -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string class GuiBulkImport(): diff --git a/pyfpdb/GuiDatabase.py b/pyfpdb/GuiDatabase.py index 2529643b..c6cf926e 100755 --- a/pyfpdb/GuiDatabase.py +++ b/pyfpdb/GuiDatabase.py @@ -35,9 +35,18 @@ import Exceptions import Database import SQL -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string class GuiDatabase: diff --git a/pyfpdb/GuiLogView.py b/pyfpdb/GuiLogView.py index af8c3d34..cd901eef 100755 --- a/pyfpdb/GuiLogView.py +++ b/pyfpdb/GuiLogView.py @@ -30,9 +30,18 @@ import logging # logging has been set up in fpdb.py or HUD_main.py, use their settings: log = logging.getLogger("logview") -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string MAX_LINES = 100000 # max lines to display in window EST_CHARS_PER_LINE = 150 # used to guesstimate number of lines in log file diff --git a/pyfpdb/HUD_main.pyw b/pyfpdb/HUD_main.pyw index cc90a641..590f9291 100755 --- a/pyfpdb/HUD_main.pyw +++ b/pyfpdb/HUD_main.pyw @@ -60,9 +60,18 @@ elif os.name == 'nt': #import Tables import Hud -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string # get config and set up logger c = Configuration.Config(file=options.config, dbname=options.dbname) diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 8265dbfd..91ac373d 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -41,9 +41,18 @@ import Hand from Exceptions import FpdbParseError import Configuration -#import gettext -#trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -#trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string import pygtk import gtk diff --git a/pyfpdb/ImapFetcher.py b/pyfpdb/ImapFetcher.py index ee267cf9..e43f799b 100755 --- a/pyfpdb/ImapFetcher.py +++ b/pyfpdb/ImapFetcher.py @@ -22,9 +22,18 @@ from imaplib import IMAP4, IMAP4_SSL import PokerStarsSummary -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string def splitPokerStarsSummaries(emailText): splitSummaries=emailText.split("\nPokerStars Tournament #")[1:] diff --git a/pyfpdb/Options.py b/pyfpdb/Options.py index 23656ff2..268009c1 100644 --- a/pyfpdb/Options.py +++ b/pyfpdb/Options.py @@ -19,9 +19,18 @@ import sys from optparse import OptionParser # http://docs.python.org/library/optparse.html -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string def fpdb_options(): diff --git a/pyfpdb/Tables_Demo.py b/pyfpdb/Tables_Demo.py index 33a586aa..45013120 100755 --- a/pyfpdb/Tables_Demo.py +++ b/pyfpdb/Tables_Demo.py @@ -36,9 +36,18 @@ import gobject import Configuration from HandHistoryConverter import getTableTitleRe -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string # get the correct module for the current os if os.name == 'posix': diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 4860dee1..e04d6af6 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -20,9 +20,18 @@ import sys import re import Queue -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string # if path is set to use an old version of python look for a new one: # (does this work in linux?) diff --git a/pyfpdb/locale/de_DE/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo similarity index 100% rename from pyfpdb/locale/de_DE/LC_MESSAGES/fpdb.mo rename to pyfpdb/locale/de/LC_MESSAGES/fpdb.mo diff --git a/pyfpdb/windows_make_bats.py b/pyfpdb/windows_make_bats.py index 976040c1..de6a970b 100755 --- a/pyfpdb/windows_make_bats.py +++ b/pyfpdb/windows_make_bats.py @@ -17,9 +17,18 @@ # create .bat scripts in windows to try out different gtk dirs -import gettext -trans = gettext.translation("fpdb", localedir="locale", languages=["de_DE"]) -trans.install() +import locale +lang=locale.getdefaultlocale()[0][0:2] +print "lang:", lang +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string try: From b08cb18c0e60d025453e798a90f8ff5973885fbc Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 21:09:18 +0200 Subject: [PATCH 127/641] remove debug print; add import to Config; gettextify tables --- pyfpdb/Anonymise.py | 1 - pyfpdb/BetfairToFpdb.py | 1 - pyfpdb/Card.py | 1 - pyfpdb/Configuration.py | 12 ++++++++++++ pyfpdb/GuiBulkImport.py | 1 - pyfpdb/GuiDatabase.py | 1 - pyfpdb/GuiLogView.py | 1 - pyfpdb/HandHistoryConverter.py | 1 - pyfpdb/ImapFetcher.py | 1 - pyfpdb/Options.py | 1 - pyfpdb/Tables.py | 19 +++++++++++++++---- pyfpdb/Tables_Demo.py | 1 - pyfpdb/TourneyFilters.py | 8 ++++---- pyfpdb/fpdb.pyw | 1 - pyfpdb/windows_make_bats.py | 1 - 15 files changed, 31 insertions(+), 20 deletions(-) diff --git a/pyfpdb/Anonymise.py b/pyfpdb/Anonymise.py index 32878900..3281fa3f 100755 --- a/pyfpdb/Anonymise.py +++ b/pyfpdb/Anonymise.py @@ -25,7 +25,6 @@ import sys import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index 4a5f8b5c..07ee2612 100755 --- a/pyfpdb/BetfairToFpdb.py +++ b/pyfpdb/BetfairToFpdb.py @@ -24,7 +24,6 @@ from HandHistoryConverter import * import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/Card.py b/pyfpdb/Card.py index 6bdf3e8b..576a7b38 100755 --- a/pyfpdb/Card.py +++ b/pyfpdb/Card.py @@ -17,7 +17,6 @@ import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 38b4544d..53ccaa56 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -36,6 +36,18 @@ import re import xml.dom.minidom from xml.dom.minidom import Node +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import logging, logging.config import ConfigParser diff --git a/pyfpdb/GuiBulkImport.py b/pyfpdb/GuiBulkImport.py index e7132018..9b88a12f 100755 --- a/pyfpdb/GuiBulkImport.py +++ b/pyfpdb/GuiBulkImport.py @@ -35,7 +35,6 @@ import Exceptions import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/GuiDatabase.py b/pyfpdb/GuiDatabase.py index c6cf926e..0f7cdab1 100755 --- a/pyfpdb/GuiDatabase.py +++ b/pyfpdb/GuiDatabase.py @@ -37,7 +37,6 @@ import SQL import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/GuiLogView.py b/pyfpdb/GuiLogView.py index cd901eef..f42db9e2 100755 --- a/pyfpdb/GuiLogView.py +++ b/pyfpdb/GuiLogView.py @@ -32,7 +32,6 @@ log = logging.getLogger("logview") import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 91ac373d..eb1d7de8 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -43,7 +43,6 @@ import Configuration import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/ImapFetcher.py b/pyfpdb/ImapFetcher.py index e43f799b..006f9894 100755 --- a/pyfpdb/ImapFetcher.py +++ b/pyfpdb/ImapFetcher.py @@ -24,7 +24,6 @@ import PokerStarsSummary import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/Options.py b/pyfpdb/Options.py index 268009c1..11ef9d43 100644 --- a/pyfpdb/Options.py +++ b/pyfpdb/Options.py @@ -21,7 +21,6 @@ from optparse import OptionParser import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/Tables.py b/pyfpdb/Tables.py index c33b1828..3ffc7d1a 100755 --- a/pyfpdb/Tables.py +++ b/pyfpdb/Tables.py @@ -29,8 +29,19 @@ import os import sys import re -# Win32 modules +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string +# Win32 modules if os.name == 'nt': import win32gui import win32process @@ -220,7 +231,7 @@ def discover_nt(c): tw.site = "Full Tilt" else: tw.site = "Unknown" - sys.stderr.write("Found unknown table = %s" % tw.title) + sys.stderr.write(_("Found unknown table = %s") % tw.title) if tw.site != "Unknown": eval("%s(tw)" % c.supported_sites[tw.site].decoder) else: @@ -247,7 +258,7 @@ def discover_nt_by_name(c, tablename): if 'Chat:' in titles[hwnd]: continue # Some sites (FTP? PS? Others?) have seperable or seperately constructed chat windows if ' - Table ' in titles[hwnd]: continue # Absolute table Chat window.. sigh. TODO: Can we tell what site we're trying to discover for somehow in here, so i can limit this check just to AP searches? temp = decode_windows(c, titles[hwnd], hwnd) - print "attach to window", temp + print _("attach to window"), temp return temp return None @@ -434,5 +445,5 @@ if __name__=="__main__": for t in tables.keys(): print tables[t] - print "press enter to continue" + print _("press enter to continue") sys.stdin.readline() diff --git a/pyfpdb/Tables_Demo.py b/pyfpdb/Tables_Demo.py index 45013120..f583ae48 100755 --- a/pyfpdb/Tables_Demo.py +++ b/pyfpdb/Tables_Demo.py @@ -38,7 +38,6 @@ from HandHistoryConverter import getTableTitleRe import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/TourneyFilters.py b/pyfpdb/TourneyFilters.py index 774c64c7..92b86ef3 100644 --- a/pyfpdb/TourneyFilters.py +++ b/pyfpdb/TourneyFilters.py @@ -45,9 +45,9 @@ class TourneyFilters(Filters.Filters): self.conf = db.config self.display = display - self.filterText = {'playerstitle':'Hero:', 'sitestitle':'Sites:', 'seatstitle':'Number of Players:', - 'seatsbetween':'Between:', 'seatsand':'And:', 'datestitle':'Date:', - 'tourneyTypesTitle':'Tourney Type'} + self.filterText = {'playerstitle':_('Hero:'), 'sitestitle':_('Sites:'), 'seatstitle':_('Number of Players:'), + 'seatsbetween':_('Between:'), 'seatsand':_('And:'), 'datestitle':_('Date:'), + 'tourneyTypesTitle':_('Tourney Type')} gen = self.conf.get_general_params() self.day_start = 0 @@ -102,7 +102,7 @@ class TourneyFilters(Filters.Filters): if len(result) == 1: self.siteid[site] = result[0][0] else: - print "Either 0 or more than one site matched (%s) - EEK" % site + print _("Either 0 or more than one site matched (%s) - EEK") % site # For use in date ranges. self.start_date = gtk.Entry(max=12) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index e04d6af6..f0d73b8f 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -22,7 +22,6 @@ import Queue import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: diff --git a/pyfpdb/windows_make_bats.py b/pyfpdb/windows_make_bats.py index de6a970b..39449fc7 100755 --- a/pyfpdb/windows_make_bats.py +++ b/pyfpdb/windows_make_bats.py @@ -19,7 +19,6 @@ import locale lang=locale.getdefaultlocale()[0][0:2] -print "lang:", lang if lang=="en": def _(string): return string else: From aacfb61d3b20ebe0858177e87a6e2f7562f3b2a9 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 23:23:17 +0200 Subject: [PATCH 128/641] add missing gettext imports, gettextify TournamentTracker.py --- pyfpdb/Hand.py | 12 +++++++++++ pyfpdb/PokerStarsToFpdb.py | 12 +++++++++++ pyfpdb/TournamentTracker.py | 42 ++++++++++++++++++++++++------------- 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index a5f73560..1d390378 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -28,6 +28,18 @@ import time,datetime from copy import deepcopy import pprint +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import logging # logging has been set up in fpdb.py or HUD_main.py, use their settings: log = logging.getLogger("parser") diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index f2978c89..58f47517 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -24,6 +24,18 @@ import sys from HandHistoryConverter import * from decimal import Decimal +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + # PokerStars HH Format class PokerStars(HandHistoryConverter): diff --git a/pyfpdb/TournamentTracker.py b/pyfpdb/TournamentTracker.py index 1c8ee207..da7135b9 100644 --- a/pyfpdb/TournamentTracker.py +++ b/pyfpdb/TournamentTracker.py @@ -34,8 +34,20 @@ import traceback (options, argv) = Options.fpdb_options() +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + if not options.errorsToConsole: - print "Note: error output is being diverted to fpdb-error-log.txt and HUD-error.txt. Any major error will be reported there _only_." + print _("Note: error output is being diverted to fpdb-error-log.txt and HUD-error.txt. Any major error will be reported there _only_.") errorFile = open('tourneyerror.txt', 'w', 0) sys.stderr = errorFile @@ -96,10 +108,10 @@ class Tournament: self.window.show() # isn't there a better way to bring something to the front? not that GTK focus works right anyway, ever else: self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - print "tournament edit window=", self.window + print _("tournament edit window="), self.window self.window.connect("delete_event", self.delete_event) self.window.connect("destroy", self.destroy) - self.window.set_title("FPDB Tournament Entry") + self.window.set_title(_("FPDB Tournament Entry")) self.window.set_border_width(1) self.window.set_default_size(480,640) self.window.set_resizable(True) @@ -139,14 +151,14 @@ class ttracker_main(object): self.main_window = gtk.Window() self.main_window.connect("destroy", self.destroy) self.vb = gtk.VBox() - self.label = gtk.Label('Closing this window will stop the Tournament Tracker') + self.label = gtk.Label(_('Closing this window will stop the Tournament Tracker')) self.vb.add(self.label) - self.addbutton = gtk.Button(label="Enter Tournament") + self.addbutton = gtk.Button(label=_("Enter Tournament")) self.addbutton.connect("clicked", self.addClicked, "add tournament") self.vb.add(self.addbutton) self.main_window.add(self.vb) - self.main_window.set_title("FPDB Tournament Tracker") + self.main_window.set_title(_("FPDB Tournament Tracker")) self.main_window.show_all() def addClicked(self, widget, data): # what is "data"? i'm guessing anything i pass in after the function name in connect() but unsure because the documentation sucks @@ -157,10 +169,10 @@ class ttracker_main(object): self.tourney_list.append(t) mylabel = gtk.Label("%s - %s - %s - %s - %s %s - %s - %s - %s - %s - %s" % (t.site, t.id, t.starttime, t.endtime, t.structure, t.game, t.buyin, t.fee, t.numrebuys, t.numplayers, t.prizepool)) print "new label=", mylabel - editbutton = gtk.Button(label="Edit") + editbutton = gtk.Button(label=_("Edit")) print "new button=", editbutton editbutton.connect("clicked", t.openwindow) - rebuybutton = gtk.Button(label="Rebuy") + rebuybutton = gtk.Button(label=_("Rebuy")) rebuybutton.connect("clicked", t.addrebuy) self.vb.add(rebuybutton) self.vb.add(editbutton) # These should probably be put in.. a.. h-box? i don't know.. @@ -259,9 +271,9 @@ class ttracker_main(object): cards['common'] = comm_cards['common'] except Exception, err: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "db error: skipping "+str(new_hand_id)+" "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("db error: skipping ")+str(new_hand_id)+" "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) if new_hand_id: # new_hand_id is none if we had an error prior to the store - sys.stderr.write("Database error %s in hand %d. Skipping.\n" % (err, int(new_hand_id))) + sys.stderr.write(_("Database error %s in hand %d. Skipping.\n") % (err, int(new_hand_id))) continue if type == "tour": # hand is from a tournament @@ -270,8 +282,8 @@ class ttracker_main(object): (tour_number, tab_number) = mat_obj.group(1, 2) temp_key = tour_number else: # tourney, but can't get number and table - print "could not find tournament: skipping " - sys.stderr.write("Could not find tournament %d in hand %d. Skipping.\n" % (int(tour_number), int(new_hand_id))) + print _("could not find tournament: skipping") + sys.stderr.write(_("Could not find tournament %d in hand %d. Skipping.\n") % (int(tour_number), int(new_hand_id))) continue else: @@ -294,15 +306,15 @@ class ttracker_main(object): # If no client window is found on the screen, complain and continue if type == "tour": table_name = "%s %s" % (tour_number, tab_number) - sys.stderr.write("table name "+table_name+" not found, skipping.\n") + sys.stderr.write(_("table name %s not found, skipping.\n")% table_name) else: self.create_HUD(new_hand_id, tablewindow, temp_key, max, poker_game, stat_dict, cards) self.db_connection.connection.rollback() if __name__== "__main__": - sys.stderr.write("tournament tracker starting\n") - sys.stderr.write("Using db name = %s\n" % (options.dbname)) + sys.stderr.write(_("tournament tracker starting\n")) + sys.stderr.write(_("Using db name = %s\n") % (options.dbname)) # start the HUD_main object hm = ttracker_main(db_name = options.dbname) From 027afaa5e10aca022755fa4232a371440c974979 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 23:28:22 +0200 Subject: [PATCH 129/641] change mo file creation script, add hungarian mo file --- pyfpdb/create-mo-files.sh | 2 +- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 0 -> 42792 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo diff --git a/pyfpdb/create-mo-files.sh b/pyfpdb/create-mo-files.sh index 85937036..2e76648b 100755 --- a/pyfpdb/create-mo-files.sh +++ b/pyfpdb/create-mo-files.sh @@ -1 +1 @@ -python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/de_DE/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po +python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo new file mode 100644 index 0000000000000000000000000000000000000000..07bd06e6654306c6c441100c50bb7facad3a1a1b GIT binary patch literal 42792 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 C25Xc6 literal 0 HcmV?d00001 From 4696c7afaf2cec4e64a0a7442ddd9dc11f9963f9 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 23:38:13 +0200 Subject: [PATCH 130/641] add missing gettext import --- pyfpdb/GuiAutoImport.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyfpdb/GuiAutoImport.py b/pyfpdb/GuiAutoImport.py index 6282063f..1d4c2053 100755 --- a/pyfpdb/GuiAutoImport.py +++ b/pyfpdb/GuiAutoImport.py @@ -31,6 +31,18 @@ from optparse import OptionParser import Configuration import string +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + class GuiAutoImport (threading.Thread): def __init__(self, settings, config, sql, parent): self.importtimer = 0 From 270657aeb098ee1274a32f9206cd38763f35025b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 15 Aug 2010 23:49:22 +0200 Subject: [PATCH 131/641] Revert "gettext-ify Hud.py" as it breaks HUD -> err32, broken pipe This reverts commit 908936fc258b7affe41f9730b615eb67ac98d352. --- pyfpdb/Hud.py | 152 +++++++++++++++++++++++++------------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index 0c608b52..a92682e7 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -134,153 +134,153 @@ class Hud: # A popup menu for the main window menu = gtk.Menu() - killitem = gtk.MenuItem(_('Kill This HUD')) + killitem = gtk.MenuItem('Kill This HUD') menu.append(killitem) if self.parent is not None: killitem.connect("activate", self.parent.kill_hud, self.table_name) - saveitem = gtk.MenuItem(_('Save HUD Layout')) + saveitem = gtk.MenuItem('Save HUD Layout') menu.append(saveitem) saveitem.connect("activate", self.save_layout) - repositem = gtk.MenuItem(_('Reposition StatWindows')) + repositem = gtk.MenuItem('Reposition StatWindows') menu.append(repositem) repositem.connect("activate", self.reposition_windows) - aggitem = gtk.MenuItem(_('Show Player Stats')) + aggitem = gtk.MenuItem('Show Player Stats') menu.append(aggitem) self.aggMenu = gtk.Menu() aggitem.set_submenu(self.aggMenu) # set agg_bb_mult to 1 to stop aggregation - item = gtk.CheckMenuItem(_('For This Blind Level Only')) + item = gtk.CheckMenuItem('For This Blind Level Only') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',1)) setattr(self, 'h_aggBBmultItem1', item) - - item = gtk.MenuItem(_('For Multiple Blind Levels:')) + # + item = gtk.MenuItem('For Multiple Blind Levels:') self.aggMenu.append(item) - - item = gtk.CheckMenuItem(_(' 0.5 to 2.0 x Current Blinds')) + # + item = gtk.CheckMenuItem(' 0.5 to 2.0 x Current Blinds') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',2)) setattr(self, 'h_aggBBmultItem2', item) - - item = gtk.CheckMenuItem(_(' 0.33 to 3.0 x Current Blinds')) + # + item = gtk.CheckMenuItem(' 0.33 to 3.0 x Current Blinds') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',3)) setattr(self, 'h_aggBBmultItem3', item) - - item = gtk.CheckMenuItem(_(' 0.1 to 10 x Current Blinds')) + # + item = gtk.CheckMenuItem(' 0.1 to 10 x Current Blinds') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',10)) setattr(self, 'h_aggBBmultItem10', item) - - item = gtk.CheckMenuItem(_(' All Levels')) + # + item = gtk.CheckMenuItem(' All Levels') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',10000)) setattr(self, 'h_aggBBmultItem10000', item) - - item = gtk.MenuItem('For #Seats:')) + # + item = gtk.MenuItem('For #Seats:') self.aggMenu.append(item) - - item = gtk.CheckMenuItem(_(' Any Number')) + # + item = gtk.CheckMenuItem(' Any Number') self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('P','A')) setattr(self, 'h_seatsStyleOptionA', item) - - item = gtk.CheckMenuItem(_(' Custom')) + # + item = gtk.CheckMenuItem(' Custom') self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('P','C')) setattr(self, 'h_seatsStyleOptionC', item) - - item = gtk.CheckMenuItem(_(' Exact')) + # + item = gtk.CheckMenuItem(' Exact') self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('P','E')) setattr(self, 'h_seatsStyleOptionE', item) - - item = gtk.MenuItem(_('Since:')) + # + item = gtk.MenuItem('Since:') self.aggMenu.append(item) - - item = gtk.CheckMenuItem(_(' All Time')) + # + item = gtk.CheckMenuItem(' All Time') self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('P','A')) setattr(self, 'h_hudStyleOptionA', item) - - item = gtk.CheckMenuItem(_(' Session')) + # + item = gtk.CheckMenuItem(' Session') self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('P','S')) setattr(self, 'h_hudStyleOptionS', item) - - item = gtk.CheckMenuItem(_(' %s Days') % (self.hud_params['h_hud_days'])) + # + item = gtk.CheckMenuItem(' %s Days' % (self.hud_params['h_hud_days'])) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('P','T')) setattr(self, 'h_hudStyleOptionT', item) - aggitem = gtk.MenuItem(_('Show Opponent Stats')) + aggitem = gtk.MenuItem('Show Opponent Stats') menu.append(aggitem) self.aggMenu = gtk.Menu() aggitem.set_submenu(self.aggMenu) # set agg_bb_mult to 1 to stop aggregation - item = gtk.CheckMenuItem(_('For This Blind Level Only')) + item = gtk.CheckMenuItem('For This Blind Level Only') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',1)) setattr(self, 'aggBBmultItem1', item) - - item = gtk.MenuItem(_('For Multiple Blind Levels:')) + # + item = gtk.MenuItem('For Multiple Blind Levels:') self.aggMenu.append(item) - - item = gtk.CheckMenuItem(_(' 0.5 to 2.0 x Current Blinds')) + # + item = gtk.CheckMenuItem(' 0.5 to 2.0 x Current Blinds') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',2)) setattr(self, 'aggBBmultItem2', item) - - item = gtk.CheckMenuItem(_(' 0.33 to 3.0 x Current Blinds')) + # + item = gtk.CheckMenuItem(' 0.33 to 3.0 x Current Blinds') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',3)) setattr(self, 'aggBBmultItem3', item) - - item = gtk.CheckMenuItem(_(' 0.1 to 10 x Current Blinds')) + # + item = gtk.CheckMenuItem(' 0.1 to 10 x Current Blinds') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',10)) setattr(self, 'aggBBmultItem10', item) - - item = gtk.CheckMenuItem(_(' All Levels')) + # + item = gtk.CheckMenuItem(' All Levels') self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',10000)) setattr(self, 'aggBBmultItem10000', item) - - item = gtk.MenuItem(_('For #Seats:')) + # + item = gtk.MenuItem('For #Seats:') self.aggMenu.append(item) - - item = gtk.CheckMenuItem(_(' Any Number')) + # + item = gtk.CheckMenuItem(' Any Number') self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('O','A')) setattr(self, 'seatsStyleOptionA', item) - - item = gtk.CheckMenuItem(_(' Custom')) + # + item = gtk.CheckMenuItem(' Custom') self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('O','C')) setattr(self, 'seatsStyleOptionC', item) - - item = gtk.CheckMenuItem(_(' Exact')) + # + item = gtk.CheckMenuItem(' Exact') self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('O','E')) setattr(self, 'seatsStyleOptionE', item) - - item = gtk.MenuItem(_('Since:')) + # + item = gtk.MenuItem('Since:') self.aggMenu.append(item) - - item = gtk.CheckMenuItem(_(' All Time')) + # + item = gtk.CheckMenuItem(' All Time') self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('O','A')) setattr(self, 'hudStyleOptionA', item) - - item = gtk.CheckMenuItem(_(' Session')) + # + item = gtk.CheckMenuItem(' Session') self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('O','S')) setattr(self, 'hudStyleOptionS', item) - - item = gtk.CheckMenuItem(_(' %s Days') % (self.hud_params['h_hud_days'])) + # + item = gtk.CheckMenuItem(' %s Days' % (self.hud_params['h_hud_days'])) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('O','T')) setattr(self, 'hudStyleOptionT', item) @@ -296,7 +296,7 @@ class Hud: getattr(self, 'h_aggBBmultItem10').set_active(True) elif self.hud_params['h_agg_bb_mult'] > 9000: getattr(self, 'h_aggBBmultItem10000').set_active(True) - + # if self.hud_params['agg_bb_mult'] == 1: getattr(self, 'aggBBmultItem1').set_active(True) elif self.hud_params['agg_bb_mult'] == 2: @@ -307,28 +307,28 @@ class Hud: getattr(self, 'aggBBmultItem10').set_active(True) elif self.hud_params['agg_bb_mult'] > 9000: getattr(self, 'aggBBmultItem10000').set_active(True) - + # if self.hud_params['h_seats_style'] == 'A': getattr(self, 'h_seatsStyleOptionA').set_active(True) elif self.hud_params['h_seats_style'] == 'C': getattr(self, 'h_seatsStyleOptionC').set_active(True) elif self.hud_params['h_seats_style'] == 'E': getattr(self, 'h_seatsStyleOptionE').set_active(True) - + # if self.hud_params['seats_style'] == 'A': getattr(self, 'seatsStyleOptionA').set_active(True) elif self.hud_params['seats_style'] == 'C': getattr(self, 'seatsStyleOptionC').set_active(True) elif self.hud_params['seats_style'] == 'E': getattr(self, 'seatsStyleOptionE').set_active(True) - + # if self.hud_params['h_hud_style'] == 'A': getattr(self, 'h_hudStyleOptionA').set_active(True) elif self.hud_params['h_hud_style'] == 'S': getattr(self, 'h_hudStyleOptionS').set_active(True) elif self.hud_params['h_hud_style'] == 'T': getattr(self, 'h_hudStyleOptionT').set_active(True) - + # if self.hud_params['hud_style'] == 'A': getattr(self, 'hudStyleOptionA').set_active(True) elif self.hud_params['hud_style'] == 'S': @@ -338,11 +338,11 @@ class Hud: eventbox.connect_object("button-press-event", self.on_button_press, menu) - debugitem = gtk.MenuItem(_('Debug StatWindows')) + debugitem = gtk.MenuItem('Debug StatWindows') menu.append(debugitem) debugitem.connect("activate", self.debug_stat_windows) - item5 = gtk.MenuItem(_('Set max seats')) + item5 = gtk.MenuItem('Set max seats') menu.append(item5) maxSeatsMenu = gtk.Menu() item5.set_submenu(maxSeatsMenu) @@ -525,7 +525,7 @@ class Hud: # ask each aux to save its layout back to the config object [aux.save_layout() for aux in self.aux_windows] # save the config object back to the file - print _("Updating config file") + print "Updating config file" self.config.save() def adj_seats(self, hand, config): @@ -534,7 +534,7 @@ class Hud: adj = range(0, self.max + 1) # default seat adjustments = no adjustment # does the user have a fav_seat? if self.max not in config.supported_sites[self.table.site].layout: - sys.stderr.write(_("No layout found for %d-max games for site %s\n") % (self.max, self.table.site) ) + sys.stderr.write("No layout found for %d-max games for site %s\n" % (self.max, self.table.site) ) return adj if self.table.site != None and int(config.supported_sites[self.table.site].layout[self.max].fav_seat) > 0: try: @@ -548,15 +548,15 @@ class Hud: if adj[j] > self.max: adj[j] = adj[j] - self.max except Exception, inst: - sys.stderr.write(_("exception in Hud.adj_seats\n\n")) - sys.stderr.write(_("error is %s") % inst) # __str__ allows args to printed directly + sys.stderr.write("exception in adj!!!\n\n") + sys.stderr.write("error is %s" % inst) # __str__ allows args to printed directly return adj def get_actual_seat(self, name): for key in self.stat_dict: if self.stat_dict[key]['screen_name'] == name: return self.stat_dict[key]['seat'] - sys.stderr.write(_("Error finding actual seat.\n")) + sys.stderr.write("Error finding actual seat.\n") def create(self, hand, config, stat_dict, cards): # update this hud, to the stats and players as of "hand" @@ -572,7 +572,7 @@ class Hud: self.stat_dict = stat_dict self.cards = cards - sys.stderr.write(_("------------------------------------------------------------\nCreating hud from hand %s\n") % hand) + sys.stderr.write("------------------------------------------------------------\nCreating hud from hand %s\n" % hand) adj = self.adj_seats(hand, config) loc = self.config.get_locations(self.table.site, self.max) if loc is None and self.max != 10: @@ -621,8 +621,8 @@ class Hud: try: statd = self.stat_dict[s] except KeyError: - log.error(_("KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric")) - log.error(_("(btw, the key was %s and statd is %s") % (s, statd)) + log.error("KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric") + log.error("(btw, the key was ", s, " and statd is...", statd) continue try: self.stat_windows[statd['seat']].player_id = statd['player_id'] @@ -929,7 +929,7 @@ class Popup_window: if __name__== "__main__": main_window = gtk.Window() main_window.connect("destroy", destroy) - label = gtk.Label(_('Fake main window, blah blah, blah\nblah, blah')) + label = gtk.Label('Fake main window, blah blah, blah\nblah, blah') main_window.add(label) main_window.show_all() @@ -937,7 +937,7 @@ if __name__== "__main__": #tables = Tables.discover(c) t = Tables.discover_table_by_name(c, "Corona") if t is None: - print _("Table not found.") + print "Table not found." db = Database.Database(c, 'fpdb', 'holdem') stat_dict = db.get_stats_from_hand(1) From 54805e8771109638c891c6a2520712e83f0112e2 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 00:31:17 +0200 Subject: [PATCH 132/641] add 8$ limit support, make list look nicer --- pyfpdb/PokerStarsToFpdb.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index 58f47517..39347f73 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -56,15 +56,20 @@ class PokerStars(HandHistoryConverter): # translations from captured groups to fpdb info strings Lim_Blinds = { '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'), - '2.00': ('0.50', '1.00'), '2': ('0.50', '1.00'), '4' : ('1.00', '2.00'), - '4.00': ('1.00', '2.00'), '6': ('1.00', '3.00'), '6.00': ('1.00', '3.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'), - '60.00': ('15.00', '30.00'), '60': ('15.00', '30.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'),'1000.00': ('250.00', '500.00'), - '1000': ('250.00', '500.00') + '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'), + '60.00': ('15.00', '30.00'), '60': ('15.00', '30.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'), + '1000.00': ('250.00', '500.00'),'1000': ('250.00', '500.00') } limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl', 'LIMIT':'fl' } From 969fb8c7aeb02207b2cdaabbfd4b2e554df2ca7f Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Mon, 16 Aug 2010 00:49:42 +0200 Subject: [PATCH 133/641] l10n: fixed plural form settings and fixed some Hungarian translations --- pyfpdb/locale/fpdb-hu_HU.po | 60 +++++++++++++++------------ pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 42792 -> 48356 bytes 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 2dfd9f7c..c39a5987 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,18 +6,18 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.904\n" "POT-Creation-Date: 2010-08-15 20:33+CEST\n" -"PO-Revision-Date: 2010-08-15 20:46+0200\n" +"PO-Revision-Date: 2010-08-16 00:47+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: UTF-8\n" "Generated-By: pygettext.py 1.5\n" -"Plural-Forms: k\n" +"Plural-Forms: nplurals=2; plural=n !=1;\n" #: Anonymise.py:47 msgid "Could not find file %s" -msgstr "%s fájl nem található" +msgstr "%s fájl nem találhatópd" #: Anonymise.py:53 msgid "Output being written to" @@ -151,15 +151,15 @@ msgstr "_Limitek" #: Filters.py:52 msgid "And:" -msgstr "És:" +msgstr "Max:" #: Filters.py:52 msgid "Between:" -msgstr "Ezek között:" +msgstr "Min:" #: Filters.py:52 msgid "Show Number of _Players" -msgstr "Mutasd a _játékosok számát" +msgstr "_Játékosok száma" #: Filters.py:53 msgid "Games:" @@ -187,7 +187,7 @@ msgstr "Csoportosítás:" #: Filters.py:55 msgid "Show Position Stats:" -msgstr "Pozíciók mutatása:" +msgstr "Pozíció" #: Filters.py:56 msgid "Date:" @@ -243,7 +243,7 @@ msgstr "self.groups[%s] beállítva erre: %s" #: Filters.py:571 msgid "Min # Hands:" -msgstr "Legalább ennyi leosztás:" +msgstr "Minimum ennyi leosztással:" #: Filters.py:637 msgid "INFO: No tourney types returned from database" @@ -673,11 +673,11 @@ msgstr "" #: GuiGraphViewer.py:211 GuiGraphViewer.py:230 msgid "Showdown: $%.2f" -msgstr "Mutatás: $%.2f" +msgstr "Mutatással: $%.2f" #: GuiGraphViewer.py:212 GuiGraphViewer.py:231 msgid "Non-showdown: $%.2f" -msgstr "Non-showdown: $%.2f" +msgstr "Mutatás nélkül: $%.2f" #: GuiGraphViewer.py:220 msgid "Profit graph for ring games" @@ -685,7 +685,7 @@ msgstr "Bevételgrafikon a készpénzes játékokról" #: GuiGraphViewer.py:340 msgid "Please choose the directory you wish to export to:" -msgstr "Választ ki az exportálás könyvtárát:" +msgstr "Válaszd ki az exportálás könyvtárát:" #: GuiGraphViewer.py:353 msgid "Closed, no graph exported" @@ -766,7 +766,7 @@ msgstr "Nem" #: GuiLogView.py:53 msgid "Log Messages" -msgstr "Nap_lóbejegyzések" +msgstr "Naplóbejegyzések" #: GuiPositionalStats.py:135 msgid "DEBUG: activesite set to %s" @@ -894,7 +894,7 @@ msgstr "Bármilyen nagyobb hiba _csak_oda_ kerül kiírásra." #: HUD_main.pyw:92 msgid "HUD_main: starting ...\n" -msgstr "HUD_main: indítás ..." +msgstr "HUD_main: indítás ...\n" #: HUD_main.pyw:105 HUD_run_me.py:62 msgid "Closing this window will exit from the HUD." @@ -922,7 +922,7 @@ msgstr "hud_dict[%s] nincs meg\n" #: HUD_main.pyw:267 msgid "will not send hand\n" -msgstr "leosztás nem lesz elküldve" +msgstr "leosztás nem lesz elküldve\n" #: HUD_main.pyw:301 msgid "HUD create: table name %s not found, skipping." @@ -1845,15 +1845,15 @@ msgid "" "tables in the database " msgstr "" "Kérlek erősítsd meg, hogy valóban (újra) létre akarod hozni a táblákat. Ha " -"már vannak táblák az adatbázisban," +"már vannak táblák az adatbázisban (" #: fpdb.pyw:545 msgid "" " they will be deleted.\n" "This may take a while." msgstr "" -" akkor azok törölve lesznek.\n" -"Ez eltarthat egy darabig." +"), akkor azok törölve lesznek.\n" +"Ja, és ez eltarthat egy darabig:)" #: fpdb.pyw:570 msgid "User cancelled recreating tables" @@ -1870,7 +1870,7 @@ msgstr " Saját gyorstár innentől: " #: fpdb.pyw:599 msgid " Villains' cache starts: " -msgstr " Ellenfelek gyorstár-e innentől: " +msgstr " Ellenfelek gyorstára innentől: " #: fpdb.pyw:612 msgid " Rebuilding HUD Cache ... " @@ -1909,8 +1909,8 @@ msgstr "A felhasználó megszakította az adatbázis indexeinek újraépítésé msgid "" "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" -"Még nincs kész: Profil mentése (próbáld meg addig is ehelyett elmenteni a " -"HUD elrendezését)" +"Még nincs kész: Profil mentése (addig használd a HUD elrendezésének " +"mentését, az jó)" #: fpdb.pyw:756 msgid "Fatal Error - Config File Missing" @@ -2002,7 +2002,7 @@ msgstr "H" #: fpdb.pyw:834 msgid "_HUD Configurator" -msgstr "_HUD beállító" +msgstr "_HUD beállítása" #: fpdb.pyw:835 msgid "G" @@ -2184,13 +2184,17 @@ msgstr "" msgid "" "\n" "Global lock taken by" -msgstr "Globális zárolást végzett:" +msgstr "" +"\n" +"Globális zárolást végzett:" #: fpdb.pyw:972 msgid "" "\n" "Failed to get global lock, it is currently held by" -msgstr "Globális zárolás meghiúsult, jelenleg már zárolta:" +msgstr "" +"\n" +"Globális zárolás meghiúsult, jelenleg már zárolta:" #: fpdb.pyw:982 msgid "Quitting normally" @@ -2214,11 +2218,11 @@ msgstr "Email import" #: fpdb.pyw:1033 msgid "Ring Player Stats" -msgstr "Készpénzes játékos statisztikák" +msgstr "Készpénzes statisztikák" #: fpdb.pyw:1039 msgid "Tourney Player Stats" -msgstr "Versenyjátékos statisztikák" +msgstr "Versenystatisztikák" #: fpdb.pyw:1045 msgid "Tourney Viewer" @@ -2259,8 +2263,10 @@ msgid "" msgstr "" "Az fpdb fordítókat keres!\n" "Ha beszélsz egy olyan nyelvet, amit az fpdb még nem, és van legalább pár " -"perced, amit erre fordítanál, akkor vedd fel a kapcsolatot velünk a " -"következő emailcímen: steffen@schaumburger.info\n" +"perced,\n" +"amit erre fordítanál, akkor vedd fel a kapcsolatot velünk a következő " +"emailcímen:\n" +"steffen@schaumburger.info\n" "\n" "Üdvözöl az fpdb!\n" "Iratkozz fel az új kiadásokról való értesítésekre a https://lists." diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index 07bd06e6654306c6c441100c50bb7facad3a1a1b..469ce97516d606e4b4c46094fabbea688b987c55 100644 GIT binary patch delta 13290 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 delta 8263 zcmYM&30#&{+Q;$pfTDtef*UIOAmR${HK~);ypvO7O{VXwnJre6@9*!q-_P5pkKc37y`1Y@=Q=m&#hYQz zy&o3(EVfRS;lIE6jA?`KMyvP#{}m+|(}->{cEc6e3HM`9`~dr)X=_Y#=!+?siOp~s zw!lp|3HM<<{%Egb<7lQ0tJ zc>P6KpZ+~q4_BeyQ;7;}3pO<&BBIfffwylD7;_Fa(IwP)M50|mJ5(n6p;kH?Tj6Zf zefObOwgpr10P6maQAzy@73lXEi(&1JiDG`!jD~JV#E#e#o8S!WfCZ=rHhETizUp}b zwW3e446mUwxgg0tw*?#1e-<UsAL_n?I0KKP zwkjdnUeEH(_RRAv^{nt*>$xSF{OiR}dIS4B4|*QP2(F(%W$1m3!hfJrehG(R7-_G(Pukyohz_UqThjRj+>&_2OHoK%zJTDy~+j zOeLZ2?}NH;Flu3AQ4>w|T!_l}GF*z4AsQ;0pRgOocD64Vf@If>!(Ld5%x$WX?K3Bl zIx<&q6h?P3hNhWcO8#Ab)U5YB&^pEDfddE!4`-Vr%>ad*Juz$7G_T zX)>@rE=AQs1?ss?sFiN>+=utje-qnbcPdiHHVZXhF_O8EsiZNHfyYsM^%W|`mr<$u z8MSxyQ`ukahswwb`Tr8JW8_2G%b2<(Z?u^%e1EU!Nsbv=j;umb1f8Vul|vl*R=Bj{&iUwjG& z;)fX0${Vsgy(k{rV-m7$CIe%z3>CnGNRrGJ)OX=Uf#i;ZBir2q_3ZyrKsW=mr zflAbKn^6m_^2T?e-v3-W`KN7O<&PnF4ath>G03JkAC-X;jK)=7eKyK-I$c z*b>cPW5z=~YT||X5-veyvK^Dv!_*KBMVN*vj&$$B9Ml8>RHS97iB_Rjb_(^}8B{HN zjJodvDv-;lE&2iVo(4m0^*6^c^amrCOsJAZIE~||FX1U{gQu}GUc%NGJIqGh9UIfX z1KZ)9sFdfUGF64z(!H31hfsU}6>2BbQ6H4nl&)5i z>NyM*@DvQg8K{6}p=ziQlkg!_iua>3^fKzX*HOj#7LL&Qzd}PP?J?4(us;%+8HGA7 zPorw$EcV8zQT8{UAxOEHGR(u5kON@iM&I6kGamK)2INGVBd9I>0h!VaXVs0F->jj* zx4~3lCccMCY3!YL?}nlFb^@xnvauPKp|)y0CgEPxR-Hm+?n|tLKcX`FE2@Y)QUD2< zh9SLZ3Js;W0QKNX)Lw1E=C~X6qC?*GcTf}l6~pib*25pMF5W`jUw5oceI%+Vo1pG% zgQ}GdW66Ij8hshiv6zVQI0x(Fect#3s0TNp_V{sBfG?o}K88*49IDzcp(gkNBQS!z zE1*WG>#?ZucH_vus<cZRwA~*|-4j z!lS5+#bw#dv_|cHPgLMTQ5gtLq>)NvI+o%Z?1VRvZ8U8r8Z#FIs1(18dhsXN0Y698 zLc}B+P*>E}WujI*6_w#dsOQ&X0C!@k&VTr1o2nr0=fWzC#*Qo_9Mdp}15g=y5!0|1 z^}?H|3`S3}nQ4s*AQ=^CcT|nsfhx{1-gp*9>HJTpp(4yhRr~$e2)Cgg*o|@coYy~$ z3h6Pd^wO(8}yzxe|VRp&`mO8YqVB8m z#$Q2g!TVl6^f?Wk-&@{5(tO(=j><>?Rb)?NS3HSr@jFziV{>c(L$EXb*{JWyT5O6g zDl;chwQ$w5E@`13GOcOo#$FhM8CZtXu`ixNt?W0{eX$GpeGoh05?qI>p`TE-6Om^> ztqG{-x}(NNpfZ?^%D@6FV19Eijo}RZ6Loyr^Ldh~p8Y*XdS-cMd**qTdRBO@_1uEm z(kD@Y?nWKMS1^J3&0!iN@KdaV2@CBC+T$4deNf{oF%4Iv0(=8?T#sQGp2G+{@A(<( zxi3+*^$jY+H&MmhAfNo}LVFsz&N4c7T8lVQ~B@7z*Yt_uol&iTx>rm>Buvt1b5(hROCwv?O#M5MxCBF zQAK$U>*05(@5wJX5aWvMan8a{^dH3fc%X><>xC`@dhj%ArRPvD_!n-*U$7TGQf&PL zYT~P?Er=?yfhJ&G`jx2nK8m`&7yIBF$S#}9I2b2~O6^KFV=@EBa1?%x<1m#H?}p1z zRlEn&@oiMi{D|7)flKY_80t9{QyDM7<+vR)u?a`31J1#o7xE06aKd}*}GMly{9V2m;*AJkM?;7;u@9g!Ed5cD4296_H zHXk9unvoUuyuRjn1hW}Gg<5&i3VS*hVif(CQ4_w6+T-`IEB+5Q#Q2qVYdfMo`Du9j z-~WnlHz*41&4umA=i2-URRf*xw_mnls68w|O}G=4xf*PRhcE%pVSl`i%1F0W_E-); z1vm`v#Z1)CA9G9%Y)hvXR-nFoFQAI)bJTBT0`W;b$55R6#9KonVgT>x+>H{PNBB;+*(qYO5+LxT4}3FJ8>>*PnV%;!ts0$wep*& zA0~~~*?;9~fw}ZIqVB(jnlNd-y?=&hAu8h`48zU;*VxK{jz<+H;Q>_S@1u$>{9#)} zF`mtF6yph)fw@=@Yfzaxi0qmk8|`yts69V~`r&j2=VJX$_8Xs%T5&b11`c9dJc@qiHy3DVrTWfx zhcryZJZyqnu|DoW-S;BK;}_TgfAvh zv={v-?FKjyHQ^|%ixa&56l_F)Hb&rL)XJBl0^fj2{ULAs1B|5qH7elmupu_uYBSIZ zJ21Z)K%*1RMZKUB6~I#%gL}RHYp8(UK?U+IYR}JLB7TZ`&#$OG?!Z}_j}vhSzJi1B zDn?<-Hu4`wqdyJ3aJ=U%)c7Kd#g(WPY(}NF29?4Ss8ezU6==OGdw&a5KwYsTjz>PG zCWtff8ft-KA1D8Q8h1Tzf5{9YpKG%dmty>OyCsjHilz#q@m17>wWyVx#nE^HdDJBD zu*G;7bu6zVbDC+tvo&%V^?dXb~4acE#jjbNmt0F*@|LP4zg`g}JB|-GeH!)n0!+Hm1J~ zwdZ?LTlOL<(6_NE{sr6M7pN_~g(~W}T{gf3RA4FC8bkePXfLK<3!IHTupG6bJ(z|r z>P43@6~DuInD~r+;c8UikK!QQfn)J+sQ0z2wjZ2{sM=Y91Q;^U&`4z9RUCsKpM>_D7M8*sFl}$)^1%JY(~EyYJn4Q0tV2p^Y79KGH?zR zz?ePu#>Y@Eu0aKO#`6Yh;^up83j3mpX_D8UkE;5Wn2XP1GDhsP<0+{A6sg8?8cDbd zwYRl66#tCc%c%Wsbl0dbCq1Q?b2w#;J0f*srVY%H65OU3^YW$uMVLX`UOsW0@o9CZ3Dd$!T&ia?>i zu=e$e+Skj=-A|ScuhTL)=wDb{y|~C<5-9eU=M>de7x9i-*D1fh!fCo{opWtfnG+1% zaF;v~tmA&armxTEce+;2@cG>bDbhOWx;#BYI z>#o_gCd^&8yFr-q)Sdy(JA3LoH}}N2U+nSw+D^EqJSUjv&+*S&Tw7gUTT@sXEG_g0 zD{8BY={wE#&1hTbFXkpqnlsSM8(&aNo(qj0ydB8ueFxmW`_KBE_BHL@;+jce&bND7 zIDdNH?|%FI2;Yz;WwmZDS;+Gj2lD+nd3go-{(_)CuqaTpJWx({i;Bs8prn8p#!MSU zzbsIa7pSPM3D(w>yG1XC)p2$l-0jPBdaZ5hEdBj Date: Mon, 16 Aug 2010 01:01:37 +0200 Subject: [PATCH 134/641] update compiled hungarian file --- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 48356 -> 45664 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index 469ce97516d606e4b4c46094fabbea688b987c55..273fe9abd185d8eea3b3e189666c0dae4c9b03ca 100644 GIT binary patch delta 8131 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 Prk;om&8~Uj`I-L*MT%Tb From 2a69e927d224274ed7d6421fdaceb5cd0d14574d Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 01:41:25 +0200 Subject: [PATCH 135/641] add more missing imports and one _() --- pyfpdb/Filters.py | 11 +++++++++++ pyfpdb/GuiGraphViewer.py | 12 ++++++++++++ pyfpdb/GuiImapFetcher.py | 12 ++++++++++++ pyfpdb/GuiPositionalStats.py | 12 ++++++++++++ pyfpdb/GuiSessionViewer.py | 12 ++++++++++++ pyfpdb/GuiTourneyPlayerStats.py | 12 ++++++++++++ pyfpdb/GuiTourneyViewer.py | 12 ++++++++++++ pyfpdb/TourneyFilters.py | 13 ++++++++++++- 8 files changed, 95 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Filters.py b/pyfpdb/Filters.py index 565b79f3..4bbc6057 100644 --- a/pyfpdb/Filters.py +++ b/pyfpdb/Filters.py @@ -30,6 +30,17 @@ import logging # logging has been set up in fpdb.py or HUD_main.py, use their settings: log = logging.getLogger("filter") +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string import Configuration import Database diff --git a/pyfpdb/GuiGraphViewer.py b/pyfpdb/GuiGraphViewer.py index dcef9712..fe82aa44 100644 --- a/pyfpdb/GuiGraphViewer.py +++ b/pyfpdb/GuiGraphViewer.py @@ -42,6 +42,18 @@ except ImportError, inst: and HUD are NOT affected by this problem.""") print "ImportError: %s" % inst.args +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import fpdb_import import Database import Filters diff --git a/pyfpdb/GuiImapFetcher.py b/pyfpdb/GuiImapFetcher.py index a4e9ff4e..b9391daa 100644 --- a/pyfpdb/GuiImapFetcher.py +++ b/pyfpdb/GuiImapFetcher.py @@ -22,6 +22,18 @@ import gtk from imaplib import IMAP4 from socket import gaierror +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import ImapFetcher class GuiImapFetcher (threading.Thread): diff --git a/pyfpdb/GuiPositionalStats.py b/pyfpdb/GuiPositionalStats.py index bc758923..4963a88f 100644 --- a/pyfpdb/GuiPositionalStats.py +++ b/pyfpdb/GuiPositionalStats.py @@ -22,6 +22,18 @@ import gtk import os from time import time, strftime +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import fpdb_import import Database import Filters diff --git a/pyfpdb/GuiSessionViewer.py b/pyfpdb/GuiSessionViewer.py index 00b7631d..56df5e78 100755 --- a/pyfpdb/GuiSessionViewer.py +++ b/pyfpdb/GuiSessionViewer.py @@ -41,6 +41,18 @@ except ImportError, inst: print _("""Failed to load numpy and/or matplotlib in Session Viewer""") print _("ImportError: %s") % inst.args +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import Card import fpdb_import import Database diff --git a/pyfpdb/GuiTourneyPlayerStats.py b/pyfpdb/GuiTourneyPlayerStats.py index 7f65888f..0b90c9b3 100644 --- a/pyfpdb/GuiTourneyPlayerStats.py +++ b/pyfpdb/GuiTourneyPlayerStats.py @@ -24,6 +24,18 @@ import gtk #import sys from time import time, strftime +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + #import Card #import fpdb_import #import Database diff --git a/pyfpdb/GuiTourneyViewer.py b/pyfpdb/GuiTourneyViewer.py index 83781b53..3c1dd53b 100644 --- a/pyfpdb/GuiTourneyViewer.py +++ b/pyfpdb/GuiTourneyViewer.py @@ -20,6 +20,18 @@ import pygtk pygtk.require('2.0') import gtk +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + class GuiTourneyViewer (threading.Thread): def __init__(self, config, db, sql, mainwin, debug=True): self.db = db diff --git a/pyfpdb/TourneyFilters.py b/pyfpdb/TourneyFilters.py index 92b86ef3..ddb98166 100644 --- a/pyfpdb/TourneyFilters.py +++ b/pyfpdb/TourneyFilters.py @@ -29,6 +29,17 @@ from time import gmtime, mktime, strftime, strptime import logging #logging has been set up in fpdb.py or HUD_main.py, use their settings: log = logging.getLogger("filter") +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string #import Configuration #import Database @@ -74,7 +85,7 @@ class TourneyFilters(Filters.Filters): self.numTourneys = int(w.get_text()) except: self.numTourneys = 0 - print "setting numTourneys:", self.numTourneys + print _("setting numTourneys:"), self.numTourneys #end def __set_num_tourneys def __toggle_box(self, widget, entry): #identical with Filters From cff0206e4d3b9b3c809b21e29c6024f90e6d7d86 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 01:58:05 +0200 Subject: [PATCH 136/641] gettext-ify tournesummary and interlocks --- pyfpdb/TourneySummary.py | 121 ++++++++++++++++++++++----------------- pyfpdb/interlocks.py | 2 +- 2 files changed, 68 insertions(+), 55 deletions(-) diff --git a/pyfpdb/TourneySummary.py b/pyfpdb/TourneySummary.py index 737f6aca..7b3aa5be 100644 --- a/pyfpdb/TourneySummary.py +++ b/pyfpdb/TourneySummary.py @@ -30,6 +30,19 @@ import operator import time,datetime from copy import deepcopy from Exceptions import * + +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import pprint import DerivedStats import Card @@ -118,59 +131,59 @@ class TourneySummary(object): def __str__(self): #TODO : Update - vars = ( ("SITE", self.siteName), - ("START TIME", self.startTime), - ("END TIME", self.endTime), - ("TOURNEY NAME", self.tourneyName), - ("TOURNEY NO", self.tourNo), - ("TOURNEY TYPE ID", self.tourneyTypeId), - ("TOURNEY ID", self.tourneyId), - ("BUYIN", self.buyin), - ("FEE", self.fee), - ("CURRENCY", self.currency), - ("HERO", self.hero), - ("MAXSEATS", self.maxseats), - ("ENTRIES", self.entries), - ("SPEED", self.speed), - ("PRIZE POOL", self.prizepool), - ("STARTING CHIP COUNT", self.buyInChips), - ("MIXED", self.mixed), - ("REBUY", self.isRebuy), - ("ADDON", self.isAddOn), - ("KO", self.isKO), - ("MATRIX", self.isMatrix), - ("MATRIX ID PROCESSED", self.matrixIdProcessed), - ("SHOOTOUT", self.isShootout), - ("MATRIX MATCH ID", self.matrixMatchId), - ("SUB TOURNEY BUY IN", self.subTourneyBuyin), - ("SUB TOURNEY FEE", self.subTourneyFee), - ("REBUY CHIPS", self.rebuyChips), - ("ADDON CHIPS", self.addOnChips), - ("REBUY COST", self.rebuyCost), - ("ADDON COST", self.addOnCost), - ("TOTAL REBUYS", self.totalRebuyCount), - ("TOTAL ADDONS", self.totalAddOnCount), - ("KO BOUNTY", self.koBounty), - ("TOURNEY COMMENT", self.tourneyComment), - ("SNG", self.isSng), - ("SATELLITE", self.isSatellite), - ("DOUBLE OR NOTHING", self.isDoubleOrNothing), - ("GUARANTEE", self.guarantee), - ("ADDED", self.added), - ("ADDED CURRENCY", self.addedCurrency), - ("COMMENT", self.comment), - ("COMMENT TIMESTAMP", self.commentTs) + vars = ( (_("SITE"), self.siteName), + (_("START TIME"), self.startTime), + (_("END TIME"), self.endTime), + (_("TOURNEY NAME"), self.tourneyName), + (_("TOURNEY NO"), self.tourNo), + (_("TOURNEY TYPE ID"), self.tourneyTypeId), + (_("TOURNEY ID"), self.tourneyId), + (_("BUYIN"), self.buyin), + (_("FEE"), self.fee), + (_("CURRENCY"), self.currency), + (_("HERO"), self.hero), + (_("MAXSEATS"), self.maxseats), + (_("ENTRIES"), self.entries), + (_("SPEED"), self.speed), + (_("PRIZE POOL"), self.prizepool), + (_("STARTING CHIP COUNT"), self.buyInChips), + (_("MIXED"), self.mixed), + (_("REBUY"), self.isRebuy), + (_("ADDON"), self.isAddOn), + (_("KO"), self.isKO), + (_("MATRIX"), self.isMatrix), + (_("MATRIX ID PROCESSED"), self.matrixIdProcessed), + (_("SHOOTOUT"), self.isShootout), + (_("MATRIX MATCH ID"), self.matrixMatchId), + (_("SUB TOURNEY BUY IN"), self.subTourneyBuyin), + (_("SUB TOURNEY FEE"), self.subTourneyFee), + (_("REBUY CHIPS"), self.rebuyChips), + (_("ADDON CHIPS"), self.addOnChips), + (_("REBUY COST"), self.rebuyCost), + (_("ADDON COST"), self.addOnCost), + (_("TOTAL REBUYS"), self.totalRebuyCount), + (_("TOTAL ADDONS"), self.totalAddOnCount), + (_("KO BOUNTY"), self.koBounty), + (_("TOURNEY COMMENT"), self.tourneyComment), + (_("SNG"), self.isSng), + (_("SATELLITE"), self.isSatellite), + (_("DOUBLE OR NOTHING"), self.isDoubleOrNothing), + (_("GUARANTEE"), self.guarantee), + (_("ADDED"), self.added), + (_("ADDED CURRENCY"), self.addedCurrency), + (_("COMMENT"), self.comment), + (_("COMMENT TIMESTAMP"), self.commentTs) ) - structs = ( ("PLAYER IDS", self.playerIds), - ("PLAYERS", self.players), - ("TOURNEYS PLAYERS IDS", self.tourneysPlayersIds), - ("RANKS", self.ranks), - ("WINNINGS", self.winnings), - ("WINNINGS CURRENCY", self.winningsCurrency), - ("COUNT REBUYS", self.rebuyCounts), - ("COUNT ADDONS", self.addOnCounts), - ("NB OF KO", self.koCounts) + structs = ( (_("PLAYER IDS"), self.playerIds), + (_("PLAYERS"), self.players), + (_("TOURNEYS PLAYERS IDS"), self.tourneysPlayersIds), + (_("RANKS"), self.ranks), + (_("WINNINGS"), self.winnings), + (_("WINNINGS CURRENCY"), self.winningsCurrency), + (_("COUNT REBUYS"), self.rebuyCounts), + (_("COUNT ADDONS"), self.addOnCounts), + (_("NB OF KO"), self.koCounts) ) str = '' for (name, var) in vars: @@ -217,7 +230,7 @@ class TourneySummary(object): self.tourneysPlayersIds = self.db.createOrUpdateTourneysPlayers(self, "TS") self.db.commit() - logging.debug("Tourney Insert/Update done") + logging.debug(_("Tourney Insert/Update done")) # TO DO : Return what has been done (tourney created, updated, nothing) # ?? stored = 1 if tourney is fully created / duplicates = 1, if everything was already here and correct / partial=1 if some things were already here (between tourney, tourneysPlayers and handsPlayers) @@ -237,7 +250,7 @@ rank (int) indicating the finishing rank (can be -1 if unknown) name (string) player name winnings (decimal) the money the player ended the tourney with (can be 0, or -1 if unknown) """ - log.debug("addPlayer: rank:%s - name : '%s' - Winnings (%s)" % (rank, name, winnings)) + log.debug(_("addPlayer: rank:%s - name : '%s' - Winnings (%s)") % (rank, name, winnings)) self.players.append(name) if rank: self.ranks.update( { name : Decimal(rank) } ) @@ -264,7 +277,7 @@ winnings (decimal) the money the player ended the tourney with (can be 0, or #end def addPlayer def incrementPlayerWinnings(self, name, additionnalWinnings): - log.debug("incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" % (name, additionnalWinnings)) + log.debug(_("incrementPlayerWinnings: name : '%s' - Add Winnings (%s)") % (name, additionnalWinnings)) oldWins = 0 if self.winnings.has_key(name): oldWins = self.winnings[name] diff --git a/pyfpdb/interlocks.py b/pyfpdb/interlocks.py index f6ef7857..c3794325 100755 --- a/pyfpdb/interlocks.py +++ b/pyfpdb/interlocks.py @@ -46,7 +46,7 @@ class InterProcessLockBase: if source == None: source="Unknown" if self._has_lock: # make sure 2nd acquire in same process fails - print "lock already held by:",self.heldBy + print _("lock already held by:"),self.heldBy return False while not self._has_lock: try: From 4f3e4ab7d49d7aabf271281696a0b014c21aea3c Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 02:28:31 +0200 Subject: [PATCH 137/641] gettextify database to line 1000 --- pyfpdb/Database.py | 71 +++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index ed4fa0a9..13d1fe0d 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -46,9 +46,17 @@ import logging # logging has been set up in fpdb.py or HUD_main.py, use their settings: log = logging.getLogger("db") - -# pyGTK modules - +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string # FreePokerTools modules import SQL @@ -63,14 +71,14 @@ try: import sqlalchemy.pool as pool use_pool = True except ImportError: - log.info("Not using sqlalchemy connection pool.") + log.info(_("Not using sqlalchemy connection pool.")) use_pool = False try: from numpy import var use_numpy = True except ImportError: - log.info("Not using numpy to define variance in sqlite.") + log.info(_("Not using numpy to define variance in sqlite.")) use_numpy = False @@ -235,7 +243,7 @@ class Database: def __init__(self, c, sql = None, autoconnect = True): #log = Configuration.get_logger("logging.conf", "db", log_dir=c.dir_log) - log.debug("Creating Database instance, sql = %s" % sql) + log.debug(_("Creating Database instance, sql = %s") % sql) self.config = c self.__connected = False self.settings = {} @@ -371,7 +379,7 @@ class Database: elif ex.args[0] == 2002 or ex.args[0] == 2003: # 2002 is no unix socket, 2003 is no tcp socket raise FpdbMySQLNoDatabase(ex.args[0], ex.args[1]) else: - print "*** WARNING UNKNOWN MYSQL ERROR", ex + print _("*** WARNING UNKNOWN MYSQL ERROR:"), ex elif backend == Database.PGSQL: import psycopg2 import psycopg2.extensions @@ -420,12 +428,12 @@ class Database: if database != ":memory:": if not os.path.isdir(self.config.dir_database) and create: - print "Creating directory: '%s'" % (self.config.dir_database) - log.info("Creating directory: '%s'" % (self.config.dir_database)) + print _("Creating directory: '%s'") % (self.config.dir_database) + log.info(_("Creating directory: '%s'") % (self.config.dir_database)) os.mkdir(self.config.dir_database) database = os.path.join(self.config.dir_database, database) self.db_path = database - log.info("Connecting to SQLite: %(database)s" % {'database':self.db_path}) + log.info(_("Connecting to SQLite: %(database)s") % {'database':self.db_path}) if os.path.exists(database) or create: self.connection = sqlite3.connect(self.db_path, detect_types=sqlite3.PARSE_DECLTYPES ) self.__connected = True @@ -437,7 +445,7 @@ class Database: if use_numpy: self.connection.create_aggregate("variance", 1, VARIANCE) else: - log.warning("Some database functions will not work without NumPy support") + log.warning(_("Some database functions will not work without NumPy support")) self.cursor = self.connection.cursor() self.cursor.execute('PRAGMA temp_store=2') # use memory for temp tables/indexes self.cursor.execute('PRAGMA synchronous=0') # don't wait for file writes to finish @@ -458,19 +466,19 @@ class Database: self.cursor.execute("SELECT * FROM Settings") settings = self.cursor.fetchone() if settings[0] != DB_VERSION: - log.error("outdated or too new database version (%s) - please recreate tables" + log.error(_("outdated or too new database version (%s) - please recreate tables") % (settings[0])) self.wrongDbVersion = True except:# _mysql_exceptions.ProgrammingError: if database != ":memory:": if create: - print "Failed to read settings table - recreating tables" - log.info("failed to read settings table - recreating tables") + print _("Failed to read settings table - recreating tables") + log.info(_("Failed to read settings table - recreating tables")) self.recreate_tables() self.check_version(database=database, create=False) else: - print "Failed to read settings table - please recreate tables" - log.info("failed to read settings table - please recreate tables") + print _("Failed to read settings table - please recreate tables") + log.info(_("Failed to read settings table - please recreate tables")) self.wrongDbVersion = True else: self.wrongDbVersion = True @@ -488,15 +496,14 @@ class Database: for i in xrange(maxtimes): try: ret = self.connection.commit() - log.debug("commit finished ok, i = "+str(i)) + log.debug(_("commit finished ok, i = ")+str(i)) ok = True except: - log.debug("commit "+str(i)+" failed: info=" + str(sys.exc_info()) - + " value=" + str(sys.exc_value)) + log.debug(_("commit %s failed: info=%s value=%s") % (str(i), str(sys.exc_info()), str(sys.exc_value)) sleep(pause) if ok: break if not ok: - log.debug("commit failed") + log.debug(_("commit failed")) raise FpdbError('sqlite commit failed') def rollback(self): @@ -665,7 +672,7 @@ class Database: row = c.fetchone() except: # TODO: what error is a database error?! err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "*** Database Error: " + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) + print _("*** Database Error: ") + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) else: if row and row[0]: self.hand_1day_ago = int(row[0]) @@ -691,10 +698,10 @@ class Database: if row and row[0]: self.date_nhands_ago[str(playerid)] = row[0] c.close() - print "Database: date n hands ago = " + self.date_nhands_ago[str(playerid)] + "(playerid "+str(playerid)+")" + print _("Database: date n hands ago = ") + self.date_nhands_ago[str(playerid)] + "(playerid "+str(playerid)+")" except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "*** Database Error: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("*** Database Error: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) # is get_stats_from_hand slow? def get_stats_from_hand( self, hand, type # type is "ring" or "tour" @@ -848,7 +855,7 @@ class Database: # prevents infinite loop so leave for now - comment out or remove? row = c.fetchone() else: - log.error("ERROR: query %s result does not have player_id as first column" % (query,)) + log.error(_("ERROR: query %s result does not have player_id as first column") % (query,)) #print " %d rows fetched, len(stat_dict) = %d" % (n, len(stat_dict)) @@ -890,7 +897,7 @@ class Database: if self.backend == self.MYSQL_INNODB: ret = self.connection.insert_id() if ret < 1 or ret > 999999999: - log.warning("getLastInsertId(): problem fetching insert_id? ret=%d" % ret) + log.warning(_("getLastInsertId(): problem fetching insert_id? ret=%d") % ret) ret = -1 elif self.backend == self.PGSQL: # some options: @@ -902,19 +909,19 @@ class Database: ret = c.execute ("SELECT lastval()") row = c.fetchone() if not row: - log.warning("getLastInsertId(%s): problem fetching lastval? row=%d" % (seq, row)) + log.warning(_("getLastInsertId(%s): problem fetching lastval? row=%d") % (seq, row)) ret = -1 else: ret = row[0] elif self.backend == self.SQLITE: ret = cursor.lastrowid else: - log.error("getLastInsertId(): unknown backend: %d" % self.backend) + log.error(_("getLastInsertId(): unknown backend: %d") % self.backend) ret = -1 except: ret = -1 err = traceback.extract_tb(sys.exc_info()[2]) - print "*** Database get_last_insert_id error: " + str(sys.exc_info()[1]) + print _("*** Database get_last_insert_id error: ") + str(sys.exc_info()[1]) print "\n".join( [e[0]+':'+str(e[1])+" "+e[2] for e in err] ) raise return ret @@ -968,11 +975,11 @@ class Database: print "dropped pg fk pg fk %s_%s_fkey, continuing ..." % (fk['fktab'], fk['fkcol']) except: if "does not exist" not in str(sys.exc_value): - print "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." \ + print _("warning: drop pg fk %s_%s_fkey failed: %s, continuing ...") \ % (fk['fktab'], fk['fkcol'], str(sys.exc_value).rstrip('\n') ) c.execute("END TRANSACTION") except: - print "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." \ + print _("warning: constraint %s_%s_fkey not dropped: %s, continuing ...") \ % (fk['fktab'],fk['fkcol'], str(sys.exc_value).rstrip('\n')) else: return -1 @@ -980,13 +987,13 @@ class Database: for idx in self.indexes[self.backend]: if idx['drop'] == 1: if self.backend == self.MYSQL_INNODB: - print "dropping mysql index ", idx['tab'], idx['col'] + print _("dropping mysql index "), idx['tab'], idx['col'] try: # apparently nowait is not implemented in mysql so this just hangs if there are locks # preventing the index drop :-( c.execute( "alter table %s drop index %s;", (idx['tab'],idx['col']) ) except: - print " drop index failed: " + str(sys.exc_info()) + print _(" drop index failed: ") + str(sys.exc_info()) # ALTER TABLE `fpdb`.`handsplayers` DROP INDEX `playerId`; # using: 'HandsPlayers' drop index 'playerId' elif self.backend == self.PGSQL: From ba3fdd4656b17e8ef9502725aae4c4bffada9150 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 02:40:58 +0200 Subject: [PATCH 138/641] gettextify Database up to line 1500 --- pyfpdb/Database.py | 114 ++++++++++++++++++++++----------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 13d1fe0d..8f1ad710 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -499,7 +499,7 @@ class Database: log.debug(_("commit finished ok, i = ")+str(i)) ok = True except: - log.debug(_("commit %s failed: info=%s value=%s") % (str(i), str(sys.exc_info()), str(sys.exc_value)) + log.debug(_("commit %s failed: info=%s value=%s") % (str(i), str(sys.exc_info()), str(sys.exc_value))) sleep(pause) if ok: break if not ok: @@ -998,7 +998,7 @@ class Database: # using: 'HandsPlayers' drop index 'playerId' elif self.backend == self.PGSQL: # DON'T FORGET TO RECREATE THEM!! - print "dropping pg index ", idx['tab'], idx['col'] + print _("dropping pg index "), idx['tab'], idx['col'] try: # try to lock table to see if index drop will work: c.execute("BEGIN TRANSACTION") @@ -1011,11 +1011,11 @@ class Database: #print "dropped pg index ", idx['tab'], idx['col'] except: if "does not exist" not in str(sys.exc_value): - print "warning: drop index %s_%s_idx failed: %s, continuing ..." \ + print _("warning: drop index %s_%s_idx failed: %s, continuing ...") \ % (idx['tab'],idx['col'], str(sys.exc_value).rstrip('\n')) c.execute("END TRANSACTION") except: - print "warning: index %s_%s_idx not dropped %s, continuing ..." \ + print _("warning: index %s_%s_idx not dropped %s, continuing ...") \ % (idx['tab'],idx['col'], str(sys.exc_value).rstrip('\n')) else: return -1 @@ -1024,7 +1024,7 @@ class Database: self.connection.set_isolation_level(1) # go back to normal isolation level self.commit() # seems to clear up errors if there were any in postgres ptime = time() - stime - print "prepare import took", ptime, "seconds" + print _("prepare import took %s seconds" % ptime) #end def prepareBulkImport def afterBulkImport(self): @@ -1055,43 +1055,43 @@ class Database: if cons: pass else: - print "creating fk ", fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] + print _("creating foreign key "), fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] try: c.execute("alter table " + fk['fktab'] + " add foreign key (" + fk['fkcol'] + ") references " + fk['rtab'] + "(" + fk['rcol'] + ")") except: - print " create fk failed: " + str(sys.exc_info()) + print _(" create foreign key failed: ") + str(sys.exc_info()) elif self.backend == self.PGSQL: - print "creating fk ", fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] + print _("creating foreign key "), fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] try: c.execute("alter table " + fk['fktab'] + " add constraint " + fk['fktab'] + '_' + fk['fkcol'] + '_fkey' + " foreign key (" + fk['fkcol'] + ") references " + fk['rtab'] + "(" + fk['rcol'] + ")") except: - print " create fk failed: " + str(sys.exc_info()) + print _(" create foreign key failed: ") + str(sys.exc_info()) else: return -1 for idx in self.indexes[self.backend]: if idx['drop'] == 1: if self.backend == self.MYSQL_INNODB: - print "creating mysql index ", idx['tab'], idx['col'] + print _("creating mysql index "), idx['tab'], idx['col'] try: s = "alter table %s add index %s(%s)" % (idx['tab'],idx['col'],idx['col']) c.execute(s) except: - print " create fk failed: " + str(sys.exc_info()) + print _(" create foreign key failed: ") + str(sys.exc_info()) elif self.backend == self.PGSQL: # pass # mod to use tab_col for index name? - print "creating pg index ", idx['tab'], idx['col'] + print _("creating pg index "), idx['tab'], idx['col'] try: s = "create index %s_%s_idx on %s(%s)" % (idx['tab'], idx['col'], idx['tab'], idx['col']) c.execute(s) except: - print " create index failed: " + str(sys.exc_info()) + print _(" create index failed: ") + str(sys.exc_info()) else: return -1 @@ -1099,7 +1099,7 @@ class Database: self.connection.set_isolation_level(1) # go back to normal isolation level self.commit() # seems to clear up errors if there were any in postgres atime = time() - stime - print "After import took", atime, "seconds" + print (_("After import took %s seconds" % atime)) #end def afterBulkImport def drop_referential_integrity(self): @@ -1131,8 +1131,8 @@ class Database: self.create_tables() self.createAllIndexes() self.commit() - print "Finished recreating tables" - log.info("Finished recreating tables") + print _("Finished recreating tables") + log.info(_("Finished recreating tables")) #end def recreate_tables def create_tables(self): @@ -1169,7 +1169,7 @@ class Database: except: #print "Error creating tables: ", str(sys.exc_value) err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error creating tables: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("***Error creating tables: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) self.rollback() raise #end def disconnect @@ -1179,7 +1179,7 @@ class Database: try: c = self.get_cursor() except: - print "*** Error unable to get cursor" + print _("*** Error unable to get databasecursor") else: backend = self.get_backend_name() if backend == 'MySQL InnoDB': # what happens if someone is using MyISAM? @@ -1191,7 +1191,7 @@ class Database: c.execute(self.sql.query['drop_table'] + table[0]) except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error dropping tables: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("***Error dropping tables: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) self.rollback() elif backend == 'PostgreSQL': try: @@ -1202,7 +1202,7 @@ class Database: c.execute(self.sql.query['drop_table'] + table[0] + ' cascade') except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error dropping tables: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("***Error dropping tables: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) self.rollback() elif backend == 'SQLite': try: @@ -1212,14 +1212,14 @@ class Database: c.execute(self.sql.query['drop_table'] + table[0]) except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error dropping tables: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("***Error dropping tables: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) self.rollback() try: self.commit() except: - print "*** Error in committing table drop" + print _("*** Error in committing table drop") err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error dropping tables: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("***Error dropping tables: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) self.rollback() #end def drop_tables @@ -1231,37 +1231,37 @@ class Database: self.connection.set_isolation_level(0) # allow table/index operations to work for idx in self.indexes[self.backend]: if self.backend == self.MYSQL_INNODB: - print "Creating mysql index %s %s" %(idx['tab'], idx['col']) - log.debug("Creating mysql index %s %s" %(idx['tab'], idx['col'])) + print _("Creating mysql index %s %s") %(idx['tab'], idx['col']) + log.debug(_("Creating mysql index %s %s") %(idx['tab'], idx['col'])) try: s = "create index %s on %s(%s)" % (idx['col'],idx['tab'],idx['col']) self.get_cursor().execute(s) except: - print " create idx failed: " + str(sys.exc_info()) + print _(" create index failed: ") + str(sys.exc_info()) elif self.backend == self.PGSQL: # mod to use tab_col for index name? - print "Creating pgsql index %s %s" %(idx['tab'], idx['col']) - log.debug("Creating pgsql index %s %s" %(idx['tab'], idx['col'])) + print _("Creating pgsql index %s %s") %(idx['tab'], idx['col']) + log.debug(_("Creating pgsql index %s %s") %(idx['tab'], idx['col'])) try: s = "create index %s_%s_idx on %s(%s)" % (idx['tab'], idx['col'], idx['tab'], idx['col']) self.get_cursor().execute(s) except: - print " create idx failed: " + str(sys.exc_info()) + print _(" create index failed: ") + str(sys.exc_info()) elif self.backend == self.SQLITE: - print "Creating sqlite index %s %s" %(idx['tab'], idx['col']) - log.debug("Creating sqlite index %s %s" %(idx['tab'], idx['col'])) + print _("Creating sqlite index %s %s") %(idx['tab'], idx['col']) + log.debug(_("Creating sqlite index %s %s") %(idx['tab'], idx['col'])) try: s = "create index %s_%s_idx on %s(%s)" % (idx['tab'], idx['col'], idx['tab'], idx['col']) self.get_cursor().execute(s) except: - log.debug("Create idx failed: " + str(sys.exc_info())) + log.debug(_("Create index failed: ") + str(sys.exc_info())) else: - print "Unknown database: MySQL, Postgres and SQLite supported" + print _("Unknown database: MySQL, Postgres and SQLite supported") return -1 if self.backend == self.PGSQL: self.connection.set_isolation_level(1) # go back to normal isolation level except: - print "Error creating indexes: " + str(sys.exc_value) + print _("Error creating indexes: ") + str(sys.exc_value) raise FpdbError( "Error creating indexes " + str(sys.exc_value) ) #end def createAllIndexes @@ -1273,29 +1273,29 @@ class Database: self.connection.set_isolation_level(0) # allow table/index operations to work for idx in self.indexes[self.backend]: if self.backend == self.MYSQL_INNODB: - print "dropping mysql index ", idx['tab'], idx['col'] + print _("dropping mysql index "), idx['tab'], idx['col'] try: self.get_cursor().execute( "alter table %s drop index %s" , (idx['tab'], idx['col']) ) except: - print " drop idx failed: " + str(sys.exc_info()) + print _(" drop index failed: ") + str(sys.exc_info()) elif self.backend == self.PGSQL: - print "dropping pg index ", idx['tab'], idx['col'] + print _("dropping pg index "), idx['tab'], idx['col'] # mod to use tab_col for index name? try: self.get_cursor().execute( "drop index %s_%s_idx" % (idx['tab'],idx['col']) ) except: - print " drop idx failed: " + str(sys.exc_info()) + print _(" drop index failed: ") + str(sys.exc_info()) elif self.backend == self.SQLITE: - print "Dropping sqlite index ", idx['tab'], idx['col'] + print _("Dropping sqlite index "), idx['tab'], idx['col'] try: self.get_cursor().execute( "drop index %s_%s_idx" % (idx['tab'],idx['col']) ) except: - print " drop idx failed: " + str(sys.exc_info()) + print _(" drop index failed: ") + str(sys.exc_info()) else: - print "Only MySQL, Postgres and SQLITE supported, what are you trying to use?" + print _("Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?") return -1 if self.backend == self.PGSQL: self.connection.set_isolation_level(1) # go back to normal isolation level @@ -1309,7 +1309,7 @@ class Database: self.connection.set_isolation_level(0) # allow table/index operations to work c = self.get_cursor() except: - print " set_isolation_level failed: " + str(sys.exc_info()) + print _(" set_isolation_level failed: ") + str(sys.exc_info()) for fk in self.foreignKeys[self.backend]: if self.backend == self.MYSQL_INNODB: @@ -1326,30 +1326,30 @@ class Database: if cons: pass else: - print "creating fk ", fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] + print _("creating foreign key "), fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] try: c.execute("alter table " + fk['fktab'] + " add foreign key (" + fk['fkcol'] + ") references " + fk['rtab'] + "(" + fk['rcol'] + ")") except: - print " create fk failed: " + str(sys.exc_info()) + print _(" create foreign key failed: ") + str(sys.exc_info()) elif self.backend == self.PGSQL: - print "creating fk ", fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] + print _("creating foreign key "), fk['fktab'], fk['fkcol'], "->", fk['rtab'], fk['rcol'] try: c.execute("alter table " + fk['fktab'] + " add constraint " + fk['fktab'] + '_' + fk['fkcol'] + '_fkey' + " foreign key (" + fk['fkcol'] + ") references " + fk['rtab'] + "(" + fk['rcol'] + ")") except: - print " create fk failed: " + str(sys.exc_info()) + print _(" create foreign key failed: ") + str(sys.exc_info()) else: - print "Only MySQL and Postgres supported so far" + print _("Only MySQL and Postgres supported so far") try: if self.backend == self.PGSQL: self.connection.set_isolation_level(1) # go back to normal isolation level except: - print " set_isolation_level failed: " + str(sys.exc_info()) + print _(" set_isolation_level failed: ") + str(sys.exc_info()) #end def createAllForeignKeys def dropAllForeignKeys(self): @@ -1373,14 +1373,14 @@ class Database: cons = c.fetchone() #print "preparebulk find fk: cons=", cons if cons: - print "dropping mysql fk", cons[0], fk['fktab'], fk['fkcol'] + print _("dropping mysql foreign key"), cons[0], fk['fktab'], fk['fkcol'] try: c.execute("alter table " + fk['fktab'] + " drop foreign key " + cons[0]) except: - print " drop failed: " + str(sys.exc_info()) + print _(" drop failed: ") + str(sys.exc_info()) elif self.backend == self.PGSQL: # DON'T FORGET TO RECREATE THEM!! - print "dropping pg fk", fk['fktab'], fk['fkcol'] + print _("dropping pg foreign key"), fk['fktab'], fk['fkcol'] try: # try to lock table to see if index drop will work: # hmmm, tested by commenting out rollback in grapher. lock seems to work but @@ -1392,17 +1392,17 @@ class Database: #print "alter table %s drop constraint %s_%s_fkey" % (fk['fktab'], fk['fktab'], fk['fkcol']) try: c.execute("alter table %s drop constraint %s_%s_fkey" % (fk['fktab'], fk['fktab'], fk['fkcol'])) - print "dropped pg fk pg fk %s_%s_fkey, continuing ..." % (fk['fktab'], fk['fkcol']) + print _("dropped pg foreign key %s_%s_fkey, continuing ...") % (fk['fktab'], fk['fkcol']) except: if "does not exist" not in str(sys.exc_value): - print "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." \ + print _("warning: drop pg fk %s_%s_fkey failed: %s, continuing ...") \ % (fk['fktab'], fk['fkcol'], str(sys.exc_value).rstrip('\n') ) c.execute("END TRANSACTION") except: - print "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." \ + print _("warning: constraint %s_%s_fkey not dropped: %s, continuing ...") \ % (fk['fktab'],fk['fkcol'], str(sys.exc_value).rstrip('\n')) else: - print "Only MySQL and Postgres supported so far" + print _("Only MySQL and Postgres supported so far") if self.backend == self.PGSQL: self.connection.set_isolation_level(1) # go back to normal isolation level @@ -1493,10 +1493,10 @@ class Database: self.get_cursor().execute(rebuild_sql_tourney) self.commit() - print "Rebuild hudcache took %.1f seconds" % (time() - stime,) + print _("Rebuild hudcache took %.1f seconds") % (time() - stime,) except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "Error rebuilding hudcache:", str(sys.exc_value) + print _("Error rebuilding hudcache:"), str(sys.exc_value) print err #end def rebuild_hudcache From 2115b57142d27c52ee82589e173889ac3390da69 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 02:50:17 +0200 Subject: [PATCH 139/641] finish gettextifying database --- pyfpdb/Database.py | 48 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 8f1ad710..f27fbc4b 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1529,7 +1529,7 @@ class Database: return "20"+tmp[0][1:3] + "-" + tmp[0][3:5] + "-" + tmp[0][5:7] except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "Error rebuilding hudcache:", str(sys.exc_value) + print _("Error rebuilding hudcache:"), str(sys.exc_value) print err #end def get_hero_hudcache_start @@ -1541,17 +1541,17 @@ class Database: try: self.get_cursor().execute(self.sql.query['analyze']) except: - print "Error during analyze:", str(sys.exc_value) + print _("Error during analyze:"), str(sys.exc_value) elif self.backend == self.PGSQL: self.connection.set_isolation_level(0) # allow analyze to work try: self.get_cursor().execute(self.sql.query['analyze']) except: - print "Error during analyze:", str(sys.exc_value) + print _("Error during analyze:"), str(sys.exc_value) self.connection.set_isolation_level(1) # go back to normal isolation level self.commit() atime = time() - stime - print "Analyze took %.1f seconds" % (atime,) + print _("Analyze took %.1f seconds") % (atime,) #end def analyzeDB def vacuumDB(self): @@ -1561,17 +1561,17 @@ class Database: try: self.get_cursor().execute(self.sql.query['vacuum']) except: - print "Error during vacuum:", str(sys.exc_value) + print _("Error during vacuum:"), str(sys.exc_value) elif self.backend == self.PGSQL: self.connection.set_isolation_level(0) # allow vacuum to work try: self.get_cursor().execute(self.sql.query['vacuum']) except: - print "Error during vacuum:", str(sys.exc_value) + print _("Error during vacuum:"), str(sys.exc_value) self.connection.set_isolation_level(1) # go back to normal isolation level self.commit() atime = time() - stime - print "Vacuum took %.1f seconds" % (atime,) + print _("Vacuum took %.1f seconds") % (atime,) #end def analyzeDB # Start of Hand Writing routines. Idea is to provide a mixture of routines to store Hand data @@ -1583,7 +1583,7 @@ class Database: try: self.get_cursor().execute(self.sql.query['lockForInsert']) except: - print "Error during lock_for_insert:", str(sys.exc_value) + print _("Error during lock_for_insert:"), str(sys.exc_value) #end def lock_for_insert ########################### @@ -1956,10 +1956,10 @@ class Database: # could also test threading.active_count() or look through threading.enumerate() # so break immediately if no threads, but count up to X exceptions if a writer # thread is still alive??? - print "queue empty too long - writer stopping ..." + print _("queue empty too long - writer stopping ...") break except: - print "writer stopping, error reading queue: " + str(sys.exc_info()) + print _("writer stopping, error reading queue: ") + str(sys.exc_info()) break #print "got hand", str(h.get_finished()) @@ -1984,16 +1984,16 @@ class Database: # deadlocks only a problem if hudcache is being updated tries = tries + 1 if tries < maxTries and wait < 5: # wait < 5 just to make sure - print "deadlock detected - trying again ..." + print _("deadlock detected - trying again ...") sleep(wait) wait = wait + wait again = True else: - print "too many deadlocks - failed to store hand " + h.get_siteHandNo() + print _("too many deadlocks - failed to store hand ") + h.get_siteHandNo() if not again: fails = fails + 1 err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error storing hand: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("***Error storing hand: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) # finished trying to store hand # always reduce q count, whether or not this hand was saved ok @@ -2003,7 +2003,7 @@ class Database: self.commit() if sendFinal: q.task_done() - print "db writer finished: stored %d hands (%d fails) in %.1f seconds" % (n, fails, time()-t0) + print _("db writer finished: stored %d hands (%d fails) in %.1f seconds") % (n, fails, time()-t0) # end def insert_queue_hands(): @@ -2013,7 +2013,7 @@ class Database: q.put(h) except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error sending finish: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + print _("***Error sending finish: ")+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) # end def send_finish_msg(): def createTourneyType(self, hand):#note: this method is used on Hand and TourneySummary objects @@ -2093,7 +2093,7 @@ class Database: (hand.tourneyTypeId, hand.tourNo, hand.entries, hand.prizepool, hand.startTime, hand.endTime, hand.tourneyName, hand.matrixIdProcessed, hand.totalRebuyCount, hand.totalAddOnCount)) else: - raise FpdbParseError("invalid source in Database.createOrUpdateTourney") + raise FpdbParseError(_("invalid source in Database.createOrUpdateTourney")) tourneyId = self.get_last_insert_id(cursor) return tourneyId #end def createOrUpdateTourney @@ -2106,7 +2106,7 @@ class Database: elif source=="HHC": playerId = hand.dbid_pids[player[1]] else: - raise FpdbParseError("invalid source in Database.createOrUpdateTourneysPlayers") + raise FpdbParseError(_("invalid source in Database.createOrUpdateTourneysPlayers")) cursor = self.get_cursor() cursor.execute (self.sql.query['getTourneysPlayersByIds'].replace('%s', self.sql.query['placeholder']), @@ -2232,7 +2232,7 @@ class HandToWrite: self.tableName = None self.seatNos = None except: - print "htw.init error: " + str(sys.exc_info()) + print _("HandToWrite.init error: ") + str(sys.exc_info()) raise # end def __init__ @@ -2282,7 +2282,7 @@ class HandToWrite: self.tableName = tableName self.seatNos = seatNos except: - print "htw.set_all error: " + str(sys.exc_info()) + print _("HandToWrite.set_all error: ") + str(sys.exc_info()) raise # end def set_hand @@ -2313,7 +2313,7 @@ if __name__=="__main__": hero = db_connection.get_player_id(c, 'PokerStars', 'nutOmatic') if hero: - print "nutOmatic is id_player = %d" % hero + print _("nutOmatic is id_player = %d") % hero # example of displaying query plan in sqlite: if db_connection.backend == 4: @@ -2321,7 +2321,7 @@ if __name__=="__main__": c = db_connection.get_cursor() c.execute('explain query plan '+sql.query['get_table_name'], (h, )) for row in c.fetchall(): - print "query plan: ", row + print _("query plan: "), row print t0 = time() @@ -2330,12 +2330,12 @@ if __name__=="__main__": for p in stat_dict.keys(): print p, " ", stat_dict[p] - print "cards =", db_connection.get_cards(u'1') + print _("cards ="), db_connection.get_cards(u'1') db_connection.close_connection - print "get_stats took: %4.3f seconds" % (t1-t0) + print _("get_stats took: %4.3f seconds") % (t1-t0) - print "press enter to continue" + print _("press enter to continue") sys.stdin.readline() #Code borrowed from http://push.cx/2008/caching-dictionaries-in-python-vs-ruby From 7a5340f2d8fc8b16850f8e7561296160851ffefb Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 02:57:03 +0200 Subject: [PATCH 140/641] gettextify fpdb_import.py --- pyfpdb/fpdb_import.py | 61 +++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index cbe87684..03fbbe48 100755 --- a/pyfpdb/fpdb_import.py +++ b/pyfpdb/fpdb_import.py @@ -35,8 +35,19 @@ log = logging.getLogger("importer") import pygtk import gtk -# fpdb/FreePokerTools modules +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string +# fpdb/FreePokerTools modules import Database import Configuration import Exceptions @@ -46,14 +57,14 @@ import Exceptions try: import MySQLdb except ImportError: - log.debug("Import database module: MySQLdb not found") + log.debug(_("Import database module: MySQLdb not found")) else: mysqlLibFound = True try: import psycopg2 except ImportError: - log.debug("Import database module: psycopg2 not found") + log.debug(_("Import database module: psycopg2 not found")) else: import psycopg2.extensions psycopg2.extensions.register_type(psycopg2.extensions.UNICODE) @@ -164,9 +175,9 @@ class Importer: self.siteIds[site] = result[0][0] else: if len(result) == 0: - log.error("Database ID for %s not found" % site) + log.error(_("Database ID for %s not found") % site) else: - log.error("[ERROR] More than 1 Database ID found for %s - Multiple currencies not implemented yet" % site) + log.error(_("[ERROR] More than 1 Database ID found for %s - Multiple currencies not implemented yet") % site) # Called from GuiBulkImport to add a file or directory. @@ -202,7 +213,7 @@ class Importer: #print " adding file ", file self.addImportFile(os.path.join(dir, file), site, filter) else: - log.warning("Attempted to add non-directory: '%s' as an import directory" % str(dir)) + log.warning(_("Attempted to add non-directory: '%s' as an import directory") % str(dir)) def runImport(self): """"Run full import on self.filelist. This is called from GuiBulkImport.py""" @@ -212,7 +223,7 @@ class Importer: # Initial setup start = datetime.datetime.now() starttime = time() - log.info("Started at %s -- %d files to import. indexes: %s" % (start, len(self.filelist), self.settings['dropIndexes'])) + log.info(_("Started at %s -- %d files to import. indexes: %s") % (start, len(self.filelist), self.settings['dropIndexes'])) if self.settings['dropIndexes'] == 'auto': self.settings['dropIndexes'] = self.calculate_auto2(self.database, 12.0, 500.0) if 'dropHudCache' in self.settings and self.settings['dropHudCache'] == 'auto': @@ -221,7 +232,7 @@ class Importer: if self.settings['dropIndexes'] == 'drop': self.database.prepareBulkImport() else: - log.debug("No need to drop indexes.") + log.debug(_("No need to drop indexes.")) #print "dropInd =", self.settings['dropIndexes'], " dropHudCache =", self.settings['dropHudCache'] if self.settings['threads'] <= 0: @@ -240,10 +251,10 @@ class Importer: (totstored, totdups, totpartial, toterrors) = self.importFiles(self.database, self.writeq) if self.writeq.empty(): - print "writers finished already" + print _("writers finished already") pass else: - print "waiting for writers to finish ..." + print _("waiting for writers to finish ...") #for t in threading.enumerate(): # print " "+str(t) #self.writeq.join() @@ -253,17 +264,17 @@ class Importer: while gtk.events_pending(): # see http://faq.pygtk.org/index.py?req=index for more hints (3.7) gtk.main_iteration(False) sleep(0.5) - print " ... writers finished" + print _(" ... writers finished") # Tidying up after import if self.settings['dropIndexes'] == 'drop': self.database.afterBulkImport() else: - print "No need to rebuild indexes." + print _("No need to rebuild indexes.") if 'dropHudCache' in self.settings and self.settings['dropHudCache'] == 'drop': self.database.rebuild_hudcache() else: - print "No need to rebuild hudcache." + print _("No need to rebuild hudcache.") self.database.analyzeDB() endtime = time() return (totstored, totdups, totpartial, toterrors, endtime-starttime) @@ -288,7 +299,7 @@ class Importer: toterrors += errors for i in xrange( self.settings['threads'] ): - print "sending finish msg qlen =", q.qsize() + print _("sending finish msg qlen ="), q.qsize() db.send_finish_msg(q) return (totstored, totdups, totpartial, toterrors) @@ -414,9 +425,9 @@ class Importer: # Load filter, process file, pass returned filename to import_fpdb_file if self.settings['threads'] > 0 and self.writeq is not None: - log.info("Converting " + file + " (" + str(q.qsize()) + ")") + log.info(_("Converting ") + file + " (" + str(q.qsize()) + ")") else: - log.info("Converting " + file) + log.info(_("Converting ") + file) hhbase = self.config.get_import_parameters().get("hhArchiveBase") hhbase = os.path.expanduser(hhbase) hhdir = os.path.join(hhbase,site) @@ -452,7 +463,7 @@ class Importer: if self.callHud and hand.dbid_hands != 0: to_hud.append(hand.dbid_hands) else: # TODO: Treat empty as an error, or just ignore? - log.error("Hand processed but empty") + log.error(_("Hand processed but empty")) # Call hudcache update if not in bulk import mode # FIXME: Need to test for bulk import that isn't rebuilding the cache @@ -465,10 +476,10 @@ class Importer: #pipe the Hands.id out to the HUD for hid in to_hud: try: - print "fpdb_import: sending hand to hud", hand.dbid_hands, "pipe =", self.caller.pipe_to_hud + print _("fpdb_import: sending hand to hud"), hand.dbid_hands, "pipe =", self.caller.pipe_to_hud self.caller.pipe_to_hud.stdin.write("%s" % (hid) + os.linesep) except IOError, e: - log.error("Failed to send hand to HUD: %s" % e) + log.error(_("Failed to send hand to HUD: %s") % e) errors = getattr(hhc, 'numErrors') stored = getattr(hhc, 'numHands') @@ -479,7 +490,7 @@ class Importer: # TODO: appropriate response? return (0, 0, 0, 1, time() - ttime) else: - log.warning("Unknown filter filter_name:'%s' in filter:'%s'" %(filter_name, filter)) + log.warning(_("Unknown filter filter_name:'%s' in filter:'%s'") %(filter_name, filter)) return (0, 0, 0, 1, time() - ttime) ttime = time() - ttime @@ -490,11 +501,11 @@ class Importer: def printEmailErrorMessage(self, errors, filename, line): traceback.print_exc(file=sys.stderr) - print "Error No.",errors,", please send the hand causing this to fpdb-main@lists.sourceforge.net so we can fix the problem." - print "Filename:", filename - print "Here is the first line of the hand so you can identify it. Please mention that the error was a ValueError:" + print (_("Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge.net so we can fix the problem.") % errors) + print _("Filename:"), filename + print _("Here is the first line of the hand so you can identify it. Please mention that the error was a ValueError:") print self.hand[0] - print "Hand logged to hand-errors.txt" + print _("Hand logged to hand-errors.txt") logfile = open('hand-errors.txt', 'a') for s in self.hand: logfile.write(str(s) + "\n") @@ -502,4 +513,4 @@ class Importer: logfile.close() if __name__ == "__main__": - print "CLI for fpdb_import is now available as CliFpdb.py" + print _("CLI for fpdb_import is now available as CliFpdb.py") From 41621c5610a209bbebb1455604c7440b730c0782 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 03:05:27 +0200 Subject: [PATCH 141/641] gettextify FulltiltToFpdb.py --- pyfpdb/FulltiltToFpdb.py | 44 +++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 179824ac..11fb8623 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -18,6 +18,18 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ######################################################################## +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import logging from HandHistoryConverter import * #import TourneySummary @@ -203,7 +215,7 @@ class Fulltilt(HandHistoryConverter): def readHandInfo(self, hand): m = self.re_HandInfo.search(hand.handText) if m is None: - logging.info("Didn't match re_HandInfo") + logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) return None hand.handid = m.group('HID') @@ -333,7 +345,7 @@ class Fulltilt(HandHistoryConverter): hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB')) def readAntes(self, hand): - logging.debug("reading antes") + logging.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'))) @@ -343,10 +355,10 @@ class Fulltilt(HandHistoryConverter): def readBringIn(self, hand): m = self.re_BringIn.search(hand.handText,re.DOTALL) if m: - logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))) + logging.debug(_("Player bringing in: %s for %s") %(m.group('PNAME'), m.group('BRINGIN'))) hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) else: - logging.warning("No bringin found, handid =%s" % hand.handid) + logging.warning(_("No bringin found, handid =%s") % hand.handid) def readButton(self, hand): hand.buttonpos = int(self.re_Button.search(hand.handText).group('BUTTON')) @@ -403,7 +415,7 @@ class Fulltilt(HandHistoryConverter): elif action.group('ATYPE') == ' checks': hand.addCheck( street, action.group('PNAME')) else: - print "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),) + print _("FullTilt: DEBUG: unimplemented readAction: '%s' '%s'") %(action.group('PNAME'),action.group('ATYPE'),) def readShowdownActions(self, hand): @@ -479,7 +491,7 @@ class Fulltilt(HandHistoryConverter): m = self.re_TourneyInfo.search(tourneyText) if not m: - log.info( "determineTourneyType : Parsing NOK" ) + log.info(_("determineTourneyType : Parsing NOK")) return False mg = m.groupdict() #print mg @@ -537,7 +549,7 @@ class Fulltilt(HandHistoryConverter): if mg['TOURNO'] is not None: tourney.tourNo = mg['TOURNO'] else: - log.info( "Unable to get a valid Tournament ID -- File rejected" ) + log.info(_("Unable to get a valid Tournament ID -- File rejected")) return False if tourney.isMatrix: if mg['MATCHNO'] is not None: @@ -568,18 +580,18 @@ class Fulltilt(HandHistoryConverter): tourney.buyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) else : if 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) != tourney.buyin: - log.error( "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) ) + log.error(_("Conflict between buyins read in topline (%s) and in BuyIn field (%s)") % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) ) tourney.subTourneyBuyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) if mg['FEE'] is not None: if tourney.fee is None: tourney.fee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) else : if 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) != tourney.fee: - log.error( "Conflict between fees read in topline (%s) and in BuyIn field (%s)" % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) ) + log.error(_("Conflict between fees read in topline (%s) and in BuyIn field (%s)") % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) ) tourney.subTourneyFee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) if tourney.buyin is None: - log.info( "Unable to affect a buyin to this tournament : assume it's a freeroll" ) + log.info(_("Unable to affect a buyin to this tournament : assume it's a freeroll")) tourney.buyin = 0 tourney.fee = 0 else: @@ -680,7 +692,7 @@ class Fulltilt(HandHistoryConverter): tourney.addPlayer(rank, a.group('PNAME'), winnings, "USD", 0, 0, 0) #TODO: make it store actual winnings currency else: - print "FullTilt: Player finishing stats unreadable : %s" % a + print _("FullTilt: Player finishing stats unreadable : %s") % a # Find Hero n = self.re_TourneyHeroFinishingP.search(playersText) @@ -689,17 +701,17 @@ class Fulltilt(HandHistoryConverter): tourney.hero = heroName # Is this really useful ? if heroName not in tourney.ranks: - print "FullTilt:", heroName, "not found in tourney.ranks ..." + print (_("FullTilt: %s not found in tourney.ranks ...") % heroName) elif (tourney.ranks[heroName] != Decimal(n.group('HERO_FINISHING_POS'))): - print "FullTilt: Bad parsing : finish position incoherent : %s / %s" % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS')) + print _("FullTilt: Bad parsing : finish position incoherent : %s / %s") % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS')) return True if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.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("-i", "--input", dest="ipath", help=_("parse input hand history"), default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.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", From d2553a8b5864d7b7d8a7f7af375b00ce5c712768 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 03:28:17 +0200 Subject: [PATCH 142/641] gettextify PartyPokerToFpdb.py --- pyfpdb/PartyPokerToFpdb.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/pyfpdb/PartyPokerToFpdb.py b/pyfpdb/PartyPokerToFpdb.py index 2c3c4bd2..2dab4569 100755 --- a/pyfpdb/PartyPokerToFpdb.py +++ b/pyfpdb/PartyPokerToFpdb.py @@ -21,6 +21,18 @@ import sys from collections import defaultdict +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + from Exceptions import FpdbParseError from HandHistoryConverter import * @@ -200,16 +212,16 @@ class PartyPoker(HandHistoryConverter): for expectedField in ['LIMIT', 'GAME']: if mg[expectedField] is None: - raise FpdbParseError( "Cannot fetch field '%s'" % expectedField) + raise FpdbParseError(_("Cannot fetch field '%s'") % expectedField) try: info['limitType'] = limits[mg['LIMIT'].strip()] except: - raise FpdbParseError("Unknown limit '%s'" % mg['LIMIT']) + raise FpdbParseError(_("Unknown limit '%s'") % mg['LIMIT']) try: (info['base'], info['category']) = games[mg['GAME']] except: - raise FpdbParseError("Unknown game type '%s'" % mg['GAME']) + raise FpdbParseError(_("Unknown game type '%s'") % mg['GAME']) if 'TOURNO' in mg: info['type'] = 'tour' @@ -243,17 +255,17 @@ class PartyPoker(HandHistoryConverter): try: info.update(self.re_Hid.search(hand.handText).groupdict()) except: - raise FpdbParseError("Cannot read HID for current hand") + raise FpdbParseError(_("Cannot read HID for current hand")) try: info.update(self.re_HandInfo.search(hand.handText,re.DOTALL).groupdict()) except: - raise FpdbParseError("Cannot read Handinfo for current hand", hid = info['HID']) + raise FpdbParseError(_("Cannot read Handinfo for current hand"), hid = info['HID']) try: info.update(self._getGameType(hand.handText).groupdict()) except: - raise FpdbParseError("Cannot read GameType for current hand", hid = info['HID']) + raise FpdbParseError(_("Cannot read GameType for current hand"), hid = info['HID']) m = self.re_CountedSeats.search(hand.handText) @@ -336,7 +348,7 @@ class PartyPoker(HandHistoryConverter): if m: hand.buttonpos = int(m.group('BUTTON')) else: - log.info('readButton: not found') + log.info(_('readButton: not found')) def readPlayerStacks(self, hand): log.debug("readPlayerStacks") @@ -464,7 +476,7 @@ class PartyPoker(HandHistoryConverter): hand.addCheck( street, playerName ) else: raise FpdbParseError( - "Unimplemented readAction: '%s' '%s'" % (playerName,actionType,), + _("Unimplemented readAction: '%s' '%s'") % (playerName,actionType,), hid = hand.hid, ) def readShowdownActions(self, hand): @@ -507,9 +519,9 @@ def renderCards(string): if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history") - 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("-i", "--input", dest="ipath", help=_("parse input hand history")) + 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", From 80bee2496919c97ca76351fba196b764a16804ba Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 03:56:36 +0200 Subject: [PATCH 143/641] insignificant bracketing change --- pyfpdb/FulltiltToFpdb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 11fb8623..75b3d560 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -692,7 +692,7 @@ class Fulltilt(HandHistoryConverter): tourney.addPlayer(rank, a.group('PNAME'), winnings, "USD", 0, 0, 0) #TODO: make it store actual winnings currency else: - print _("FullTilt: Player finishing stats unreadable : %s") % a + print (_("FullTilt: Player finishing stats unreadable : %s") % a) # Find Hero n = self.re_TourneyHeroFinishingP.search(playersText) @@ -703,7 +703,7 @@ class Fulltilt(HandHistoryConverter): if heroName not in tourney.ranks: print (_("FullTilt: %s not found in tourney.ranks ...") % heroName) elif (tourney.ranks[heroName] != Decimal(n.group('HERO_FINISHING_POS'))): - print _("FullTilt: Bad parsing : finish position incoherent : %s / %s") % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS')) + print (_("FullTilt: Bad parsing : finish position incoherent : %s / %s") % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS'))) return True From a1f079e4479ed7865720c0adc7e4033625943635 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 04:14:25 +0200 Subject: [PATCH 144/641] Revert "gettextify FulltiltToFpdb.py" This reverts commit 41621c5610a209bbebb1455604c7440b730c0782. Conflicts: pyfpdb/FulltiltToFpdb.py --- pyfpdb/FulltiltToFpdb.py | 44 +++++++++++++++------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 75b3d560..179824ac 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -18,18 +18,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ######################################################################## -import locale -lang=locale.getdefaultlocale()[0][0:2] -if lang=="en": - def _(string): return string -else: - import gettext - try: - trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) - trans.install() - except IOError: - def _(string): return string - import logging from HandHistoryConverter import * #import TourneySummary @@ -215,7 +203,7 @@ class Fulltilt(HandHistoryConverter): def readHandInfo(self, hand): m = self.re_HandInfo.search(hand.handText) if m is None: - logging.info(_("Didn't match re_HandInfo")) + logging.info("Didn't match re_HandInfo") logging.info(hand.handText) return None hand.handid = m.group('HID') @@ -345,7 +333,7 @@ class Fulltilt(HandHistoryConverter): hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB')) def readAntes(self, hand): - logging.debug(_("reading antes")) + logging.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'))) @@ -355,10 +343,10 @@ class Fulltilt(HandHistoryConverter): def readBringIn(self, hand): m = self.re_BringIn.search(hand.handText,re.DOTALL) if m: - logging.debug(_("Player bringing in: %s for %s") %(m.group('PNAME'), m.group('BRINGIN'))) + logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))) hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) else: - logging.warning(_("No bringin found, handid =%s") % hand.handid) + logging.warning("No bringin found, handid =%s" % hand.handid) def readButton(self, hand): hand.buttonpos = int(self.re_Button.search(hand.handText).group('BUTTON')) @@ -415,7 +403,7 @@ class Fulltilt(HandHistoryConverter): elif action.group('ATYPE') == ' checks': hand.addCheck( street, action.group('PNAME')) else: - print _("FullTilt: DEBUG: unimplemented readAction: '%s' '%s'") %(action.group('PNAME'),action.group('ATYPE'),) + print "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),) def readShowdownActions(self, hand): @@ -491,7 +479,7 @@ class Fulltilt(HandHistoryConverter): m = self.re_TourneyInfo.search(tourneyText) if not m: - log.info(_("determineTourneyType : Parsing NOK")) + log.info( "determineTourneyType : Parsing NOK" ) return False mg = m.groupdict() #print mg @@ -549,7 +537,7 @@ class Fulltilt(HandHistoryConverter): if mg['TOURNO'] is not None: tourney.tourNo = mg['TOURNO'] else: - log.info(_("Unable to get a valid Tournament ID -- File rejected")) + log.info( "Unable to get a valid Tournament ID -- File rejected" ) return False if tourney.isMatrix: if mg['MATCHNO'] is not None: @@ -580,18 +568,18 @@ class Fulltilt(HandHistoryConverter): tourney.buyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) else : if 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) != tourney.buyin: - log.error(_("Conflict between buyins read in topline (%s) and in BuyIn field (%s)") % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) ) + log.error( "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) ) tourney.subTourneyBuyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) if mg['FEE'] is not None: if tourney.fee is None: tourney.fee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) else : if 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) != tourney.fee: - log.error(_("Conflict between fees read in topline (%s) and in BuyIn field (%s)") % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) ) + log.error( "Conflict between fees read in topline (%s) and in BuyIn field (%s)" % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) ) tourney.subTourneyFee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) if tourney.buyin is None: - log.info(_("Unable to affect a buyin to this tournament : assume it's a freeroll")) + log.info( "Unable to affect a buyin to this tournament : assume it's a freeroll" ) tourney.buyin = 0 tourney.fee = 0 else: @@ -692,7 +680,7 @@ class Fulltilt(HandHistoryConverter): tourney.addPlayer(rank, a.group('PNAME'), winnings, "USD", 0, 0, 0) #TODO: make it store actual winnings currency else: - print (_("FullTilt: Player finishing stats unreadable : %s") % a) + print "FullTilt: Player finishing stats unreadable : %s" % a # Find Hero n = self.re_TourneyHeroFinishingP.search(playersText) @@ -701,17 +689,17 @@ class Fulltilt(HandHistoryConverter): tourney.hero = heroName # Is this really useful ? if heroName not in tourney.ranks: - print (_("FullTilt: %s not found in tourney.ranks ...") % heroName) + print "FullTilt:", heroName, "not found in tourney.ranks ..." elif (tourney.ranks[heroName] != Decimal(n.group('HERO_FINISHING_POS'))): - print (_("FullTilt: Bad parsing : finish position incoherent : %s / %s") % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS'))) + print "FullTilt: Bad parsing : finish position incoherent : %s / %s" % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS')) return True if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help=_("parse input hand history"), default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.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("-i", "--input", dest="ipath", help="parse input hand history", default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.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", From 69564d2b6b22ff754a599620e05f2be7c1407a1b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 04:22:51 +0200 Subject: [PATCH 145/641] gettextify GuiRingPlayerStats.py --- pyfpdb/GuiRingPlayerStats.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/pyfpdb/GuiRingPlayerStats.py b/pyfpdb/GuiRingPlayerStats.py index 67bfd246..081e1b70 100644 --- a/pyfpdb/GuiRingPlayerStats.py +++ b/pyfpdb/GuiRingPlayerStats.py @@ -24,6 +24,18 @@ import os import sys from time import time, strftime +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import Card import fpdb_import import Database @@ -237,13 +249,13 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): if not sitenos: #Should probably pop up here. - print "No sites selected - defaulting to PokerStars" + print _("No sites selected - defaulting to PokerStars") sitenos = [2] if not playerids: - print "No player ids found" + print _("No player ids found") return if not limits: - print "No limits found" + print _("No limits found") return self.createStatsTable(vbox, playerids, sitenos, limits, type, seats, groups, dates, games) @@ -308,7 +320,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): self.stats_vbox.set_position(self.top_pane_height + self.height_inc) self.db.rollback() - print "Stats page displayed in %4.2f seconds" % (time() - startTime) + print (_("Stats page displayed in %4.2f seconds") % (time() - startTime)) #end def createStatsTable def reset_style_render_func(self, treeviewcolumn, cell, model, iter): @@ -355,7 +367,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): #print "n =", n, "iter1[n] =", self.liststore[grid].get_value(iter1,n), "iter2[n] =", self.liststore[grid].get_value(iter2,n), "ret =", ret except: err = traceback.extract_tb(sys.exc_info()[2]) - print "***sortnums error: " + str(sys.exc_info()[1]) + print _("***sortnums error: ") + str(sys.exc_info()[1]) print "\n".join( [e[0]+':'+str(e[1])+" "+e[2] for e in err] ) return(ret) @@ -377,7 +389,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): # to turn indicator off for other cols except: err = traceback.extract_tb(sys.exc_info()[2]) - print "***sortcols error: " + str(sys.exc_info()[1]) + print _("***sortcols error: ") + str(sys.exc_info()[1]) print "\n".join( [e[0]+':'+str(e[1])+" "+e[2] for e in err] ) #end def sortcols @@ -668,7 +680,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): #end def refineQuery def showDetailFilter(self, widget, data): - detailDialog = gtk.Dialog(title="Detailed Filters", parent=self.main_window + detailDialog = gtk.Dialog(title=_("Detailed Filters"), parent=self.main_window ,flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT ,buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) @@ -677,7 +689,7 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): detailDialog.vbox.pack_start(handbox, False, False, 0) handbox.show() - label = gtk.Label("Hand Filters:") + label = gtk.Label(_("Hand Filters:")) handbox.add(label) label.show() @@ -690,8 +702,8 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): cb = gtk.CheckButton() lbl_from = gtk.Label(htest[1]) lbl_from.set_alignment(xalign=0.0, yalign=0.5) - lbl_tween = gtk.Label('between') - lbl_to = gtk.Label('and') + lbl_tween = gtk.Label(_('between')) + lbl_to = gtk.Label(_('and')) adj1 = gtk.Adjustment(value=htest[2], lower=0, upper=10, step_incr=1, page_incr=1, page_size=0) sb1 = gtk.SpinButton(adjustment=adj1, climb_rate=0.0, digits=0) adj2 = gtk.Adjustment(value=htest[3], lower=2, upper=10, step_incr=1, page_incr=1, page_size=0) From f6dfbc072fe80504af23e5f9e564e9e8007dd1ef Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 05:45:06 +0200 Subject: [PATCH 146/641] add list of dependencies' py27 windows installer availability/link --- packaging/windows/py27-links.txt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packaging/windows/py27-links.txt diff --git a/packaging/windows/py27-links.txt b/packaging/windows/py27-links.txt new file mode 100644 index 00000000..8005ec8d --- /dev/null +++ b/packaging/windows/py27-links.txt @@ -0,0 +1,9 @@ +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 +matplotlib X ... not available as py27 as of 16aug2010: https://sourceforge.net/projects/matplotlib/files/matplotlib/ +pygtk X ... not available as py27 as of 16aug2010: http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/ +pycairo X ... not available as py27 as of 16aug2010: http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/ +pyGobject X ... not available as py27 as of 16aug2010: http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/ +py2exe 0.6.9 ... https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download +psycopg2 ... http://www.stickpeople.com/projects/python/win-psycopg/psycopg2-2.2.2.win32-py2.7-pg8.4.4-release.exe + From c2031368775691662bcbb9c4febebece45b3bb6c Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 07:49:24 +0200 Subject: [PATCH 147/641] update english po --- pyfpdb/locale/fpdb-en_GB.po | 1760 +++++++++++++++++++++++------------ 1 file changed, 1161 insertions(+), 599 deletions(-) diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index 88fd28f9..c213d1dd 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-15 20:33+CEST\n" +"POT-Creation-Date: 2010-08-16 07:17+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,43 +15,43 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: Anonymise.py:47 +#: Anonymise.py:55 msgid "Could not find file %s" msgstr "" -#: Anonymise.py:53 +#: Anonymise.py:61 msgid "Output being written to" msgstr "" -#: BetfairToFpdb.py:75 +#: BetfairToFpdb.py:83 msgid "GameInfo regex did not match" msgstr "" -#: BetfairToFpdb.py:106 +#: BetfairToFpdb.py:114 msgid "Didn't match re_HandInfo" msgstr "" -#: BetfairToFpdb.py:162 +#: BetfairToFpdb.py:170 msgid "No bringin found" msgstr "" -#: BetfairToFpdb.py:198 PokerStarsToFpdb.py:423 +#: BetfairToFpdb.py:206 PokerStarsToFpdb.py:440 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "" -#: BetfairToFpdb.py:221 PokerStarsToFpdb.py:450 +#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 msgid "parse input hand history" msgstr "" -#: BetfairToFpdb.py:222 PokerStarsToFpdb.py:451 +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 msgid "output translation to" msgstr "" -#: BetfairToFpdb.py:223 PokerStarsToFpdb.py:452 +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 msgid "follow (tail -f) the input" msgstr "" -#: Card.py:159 +#: Card.py:167 msgid "fpdb card encoding(same as pokersource)" msgstr "" @@ -65,507 +65,807 @@ msgid "" "Could not encode: \"%s\"\n" msgstr "" -#: Configuration.py:98 +#: Configuration.py:110 msgid "" "No %s found\n" " in %s\n" " or %s\n" msgstr "" -#: Configuration.py:99 +#: Configuration.py:111 msgid "" "Config file has been created at %s.\n" msgstr "" -#: Configuration.py:104 Configuration.py:105 +#: Configuration.py:116 Configuration.py:117 msgid "" "Error copying .example file, cannot fall back. Exiting.\n" msgstr "" -#: Configuration.py:109 Configuration.py:110 +#: Configuration.py:121 Configuration.py:122 msgid "" "No %s found, cannot fall back. Exiting.\n" msgstr "" -#: Configuration.py:140 +#: Configuration.py:152 msgid "Default logger initialised for " msgstr "" -#: Configuration.py:141 +#: Configuration.py:153 msgid "Default logger intialised for " msgstr "" -#: Configuration.py:152 +#: Configuration.py:164 Database.py:431 Database.py:432 msgid "Creating directory: '%s'" msgstr "" -#: Configuration.py:178 +#: Configuration.py:190 msgid "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're not on a Mac, please report this problem." msgstr "" -#: Configuration.py:261 +#: Configuration.py:273 msgid "Loading site" msgstr "" -#: Configuration.py:499 +#: Configuration.py:511 msgid "config.general: adding %s = %s" msgstr "" -#: Configuration.py:532 Configuration.py:533 +#: Configuration.py:544 Configuration.py:545 msgid "bad number in xalignment was ignored" msgstr "" -#: Configuration.py:586 Configuration.py:587 +#: Configuration.py:598 Configuration.py:599 msgid "Configuration file %s not found. Using defaults." msgstr "" -#: Configuration.py:603 +#: Configuration.py:615 msgid "Reading configuration file %s" msgstr "" -#: Configuration.py:604 +#: Configuration.py:616 msgid "" "\n" "Reading configuration file %s\n" msgstr "" -#: Configuration.py:609 +#: Configuration.py:621 msgid "Error parsing %s. See error log file." msgstr "" -#: Filters.py:51 +#: Database.py:74 +msgid "Not using sqlalchemy connection pool." +msgstr "" + +#: Database.py:81 +msgid "Not using numpy to define variance in sqlite." +msgstr "" + +#: Database.py:246 +msgid "Creating Database instance, sql = %s" +msgstr "" + +#: Database.py:382 +msgid "*** WARNING UNKNOWN MYSQL ERROR:" +msgstr "" + +#: Database.py:436 +msgid "Connecting to SQLite: %(database)s" +msgstr "" + +#: Database.py:448 +msgid "Some database functions will not work without NumPy support" +msgstr "" + +#: Database.py:469 +msgid "outdated or too new database version (%s) - please recreate tables" +msgstr "" + +#: Database.py:475 Database.py:476 +msgid "Failed to read settings table - recreating tables" +msgstr "" + +#: Database.py:480 Database.py:481 +msgid "Failed to read settings table - please recreate tables" +msgstr "" + +#: Database.py:499 +msgid "commit finished ok, i = " +msgstr "" + +#: Database.py:502 +msgid "commit %s failed: info=%s value=%s" +msgstr "" + +#: Database.py:506 +msgid "commit failed" +msgstr "" + +#: Database.py:675 Database.py:704 +msgid "*** Database Error: " +msgstr "" + +#: Database.py:701 +msgid "Database: date n hands ago = " +msgstr "" + +#: Database.py:858 +msgid "ERROR: query %s result does not have player_id as first column" +msgstr "" + +#: Database.py:900 +msgid "getLastInsertId(): problem fetching insert_id? ret=%d" +msgstr "" + +#: Database.py:912 +msgid "getLastInsertId(%s): problem fetching lastval? row=%d" +msgstr "" + +#: Database.py:919 +msgid "getLastInsertId(): unknown backend: %d" +msgstr "" + +#: Database.py:924 +msgid "*** Database get_last_insert_id error: " +msgstr "" + +#: Database.py:978 Database.py:1398 +msgid "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." +msgstr "" + +#: Database.py:982 Database.py:1402 +msgid "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." +msgstr "" + +#: Database.py:990 Database.py:1276 +msgid "dropping mysql index " +msgstr "" + +#: Database.py:996 Database.py:1281 Database.py:1289 Database.py:1296 +msgid " drop index failed: " +msgstr "" + +#: Database.py:1001 Database.py:1283 +msgid "dropping pg index " +msgstr "" + +#: Database.py:1014 +msgid "warning: drop index %s_%s_idx failed: %s, continuing ..." +msgstr "" + +#: Database.py:1018 +msgid "warning: index %s_%s_idx not dropped %s, continuing ..." +msgstr "" + +#: Database.py:1058 Database.py:1066 Database.py:1329 Database.py:1337 +msgid "creating foreign key " +msgstr "" + +#: Database.py:1064 Database.py:1085 Database.py:1335 +msgid " create foreign key failed: " +msgstr "" + +#: Database.py:1073 Database.py:1344 +msgid " create foreign key failed: " +msgstr "" + +#: Database.py:1080 +msgid "creating mysql index " +msgstr "" + +#: Database.py:1089 +msgid "creating pg index " +msgstr "" + +#: Database.py:1094 +msgid " create index failed: " +msgstr "" + +#: Database.py:1134 Database.py:1135 +msgid "Finished recreating tables" +msgstr "" + +#: Database.py:1172 +msgid "***Error creating tables: " +msgstr "" + +#: Database.py:1182 +msgid "*** Error unable to get databasecursor" +msgstr "" + +#: Database.py:1194 Database.py:1205 Database.py:1215 Database.py:1222 +msgid "***Error dropping tables: " +msgstr "" + +#: Database.py:1220 +msgid "*** Error in committing table drop" +msgstr "" + +#: Database.py:1234 Database.py:1235 +msgid "Creating mysql index %s %s" +msgstr "" + +#: Database.py:1240 Database.py:1249 +msgid " create index failed: " +msgstr "" + +#: Database.py:1243 Database.py:1244 +msgid "Creating pgsql index %s %s" +msgstr "" + +#: Database.py:1251 Database.py:1252 +msgid "Creating sqlite index %s %s" +msgstr "" + +#: Database.py:1257 +msgid "Create index failed: " +msgstr "" + +#: Database.py:1259 +msgid "Unknown database: MySQL, Postgres and SQLite supported" +msgstr "" + +#: Database.py:1264 +msgid "Error creating indexes: " +msgstr "" + +#: Database.py:1291 +msgid "Dropping sqlite index " +msgstr "" + +#: Database.py:1298 +msgid "Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" +msgstr "" + +#: Database.py:1312 Database.py:1352 +msgid " set_isolation_level failed: " +msgstr "" + +#: Database.py:1346 Database.py:1405 +msgid "Only MySQL and Postgres supported so far" +msgstr "" + +#: Database.py:1376 +msgid "dropping mysql foreign key" +msgstr "" + +#: Database.py:1380 +msgid " drop failed: " +msgstr "" + +#: Database.py:1383 +msgid "dropping pg foreign key" +msgstr "" + +#: Database.py:1395 +msgid "dropped pg foreign key %s_%s_fkey, continuing ..." +msgstr "" + +#: Database.py:1496 +msgid "Rebuild hudcache took %.1f seconds" +msgstr "" + +#: Database.py:1499 Database.py:1532 +msgid "Error rebuilding hudcache:" +msgstr "" + +#: Database.py:1544 Database.py:1550 +msgid "Error during analyze:" +msgstr "" + +#: Database.py:1554 +msgid "Analyze took %.1f seconds" +msgstr "" + +#: Database.py:1564 Database.py:1570 +msgid "Error during vacuum:" +msgstr "" + +#: Database.py:1574 +msgid "Vacuum took %.1f seconds" +msgstr "" + +#: Database.py:1586 +msgid "Error during lock_for_insert:" +msgstr "" + +#: Database.py:1959 +msgid "queue empty too long - writer stopping ..." +msgstr "" + +#: Database.py:1962 +msgid "writer stopping, error reading queue: " +msgstr "" + +#: Database.py:1987 +msgid "deadlock detected - trying again ..." +msgstr "" + +#: Database.py:1992 +msgid "too many deadlocks - failed to store hand " +msgstr "" + +#: Database.py:1996 +msgid "***Error storing hand: " +msgstr "" + +#: Database.py:2006 +msgid "db writer finished: stored %d hands (%d fails) in %.1f seconds" +msgstr "" + +#: Database.py:2016 +msgid "***Error sending finish: " +msgstr "" + +#: Database.py:2096 +msgid "invalid source in Database.createOrUpdateTourney" +msgstr "" + +#: Database.py:2109 +msgid "invalid source in Database.createOrUpdateTourneysPlayers" +msgstr "" + +#: Database.py:2235 +msgid "HandToWrite.init error: " +msgstr "" + +#: Database.py:2285 +msgid "HandToWrite.set_all error: " +msgstr "" + +#: Database.py:2316 +msgid "nutOmatic is id_player = %d" +msgstr "" + +#: Database.py:2324 +msgid "query plan: " +msgstr "" + +#: Database.py:2333 +msgid "cards =" +msgstr "" + +#: Database.py:2336 +msgid "get_stats took: %4.3f seconds" +msgstr "" + +#: Database.py:2338 Tables.py:448 +msgid "press enter to continue" +msgstr "" + +#: Filters.py:62 msgid "All" msgstr "" -#: Filters.py:51 +#: Filters.py:62 msgid "None" msgstr "" -#: Filters.py:51 +#: Filters.py:62 msgid "Show _Limits" msgstr "" -#: Filters.py:52 -msgid "And:" -msgstr "" - -#: Filters.py:52 -msgid "Between:" -msgstr "" - -#: Filters.py:52 +#: Filters.py:63 msgid "Show Number of _Players" msgstr "" -#: Filters.py:53 +#: Filters.py:63 TourneyFilters.py:60 +msgid "And:" +msgstr "" + +#: Filters.py:63 TourneyFilters.py:60 +msgid "Between:" +msgstr "" + +#: Filters.py:64 msgid "Games:" msgstr "" -#: Filters.py:53 +#: Filters.py:64 TourneyFilters.py:59 msgid "Hero:" msgstr "" -#: Filters.py:53 +#: Filters.py:64 TourneyFilters.py:59 msgid "Sites:" msgstr "" -#: Filters.py:54 +#: Filters.py:65 msgid "Limits:" msgstr "" -#: Filters.py:54 +#: Filters.py:65 TourneyFilters.py:59 msgid "Number of Players:" msgstr "" -#: Filters.py:55 +#: Filters.py:66 msgid "Grouping:" msgstr "" -#: Filters.py:55 +#: Filters.py:66 msgid "Show Position Stats:" msgstr "" -#: Filters.py:56 +#: Filters.py:67 TourneyFilters.py:60 msgid "Date:" msgstr "" -#: Filters.py:57 +#: Filters.py:68 msgid "All Players" msgstr "" -#: Filters.py:58 +#: Filters.py:69 msgid "Ring" msgstr "" -#: Filters.py:58 +#: Filters.py:69 msgid "Tourney" msgstr "" -#: Filters.py:92 +#: Filters.py:103 TourneyFilters.py:116 msgid "Either 0 or more than one site matched (%s) - EEK" msgstr "" -#: Filters.py:302 +#: Filters.py:313 msgid "%s was toggled %s" msgstr "" -#: Filters.py:302 +#: Filters.py:313 msgid "OFF" msgstr "" -#: Filters.py:302 +#: Filters.py:313 msgid "ON" msgstr "" -#: Filters.py:383 +#: Filters.py:394 msgid "self.sites[%s] set to %s" msgstr "" -#: Filters.py:389 +#: Filters.py:400 msgid "self.games[%s] set to %s" msgstr "" -#: Filters.py:395 +#: Filters.py:406 msgid "self.limit[%s] set to %s" msgstr "" -#: Filters.py:532 +#: Filters.py:543 msgid "self.seats[%s] set to %s" msgstr "" -#: Filters.py:538 +#: Filters.py:549 msgid "self.groups[%s] set to %s" msgstr "" -#: Filters.py:571 +#: Filters.py:582 msgid "Min # Hands:" msgstr "" -#: Filters.py:637 +#: Filters.py:648 msgid "INFO: No tourney types returned from database" msgstr "" -#: Filters.py:638 +#: Filters.py:649 msgid "No tourney types returned from database" msgstr "" -#: Filters.py:664 Filters.py:753 +#: Filters.py:675 Filters.py:764 msgid "INFO: No games returned from database" msgstr "" -#: Filters.py:665 Filters.py:754 +#: Filters.py:676 Filters.py:765 msgid "No games returned from database" msgstr "" -#: Filters.py:902 +#: Filters.py:913 msgid " Clear Dates " msgstr "" -#: Filters.py:929 fpdb.pyw:719 +#: Filters.py:940 fpdb.pyw:721 msgid "Pick a date" msgstr "" -#: Filters.py:935 fpdb.pyw:725 +#: Filters.py:946 fpdb.pyw:727 msgid "Done" msgstr "" -#: GuiAutoImport.py:73 +#: GuiAutoImport.py:85 msgid "Time between imports in seconds:" msgstr "" -#: GuiAutoImport.py:104 GuiAutoImport.py:172 GuiAutoImport.py:249 +#: GuiAutoImport.py:116 GuiAutoImport.py:184 GuiAutoImport.py:261 msgid " Start _Autoimport " msgstr "" -#: GuiAutoImport.py:123 +#: GuiAutoImport.py:135 msgid "AutoImport Ready." msgstr "" -#: GuiAutoImport.py:136 +#: GuiAutoImport.py:148 msgid "Please choose the path that you want to auto import" msgstr "" -#: GuiAutoImport.py:159 +#: GuiAutoImport.py:171 msgid " _Auto Import Running " msgstr "" -#: GuiAutoImport.py:170 +#: GuiAutoImport.py:182 msgid " Stop _Autoimport " msgstr "" -#: GuiAutoImport.py:195 +#: GuiAutoImport.py:207 msgid "" "\n" "Global lock taken ... Auto Import Started.\n" msgstr "" -#: GuiAutoImport.py:197 +#: GuiAutoImport.py:209 msgid " _Stop Autoimport " msgstr "" -#: GuiAutoImport.py:213 -msgid "opening pipe to HUD" -msgstr "" - #: GuiAutoImport.py:225 -msgid "" -"\n" -"*** GuiAutoImport Error opening pipe: " +msgid "opening pipe to HUD" msgstr "" #: GuiAutoImport.py:237 msgid "" "\n" +"*** GuiAutoImport Error opening pipe: " +msgstr "" + +#: GuiAutoImport.py:249 +msgid "" +"\n" "auto-import aborted - global lock not available" msgstr "" -#: GuiAutoImport.py:242 +#: GuiAutoImport.py:254 msgid "" "\n" "Stopping autoimport - global lock released." msgstr "" -#: GuiAutoImport.py:244 +#: GuiAutoImport.py:256 msgid "" "\n" " * Stop Autoimport: HUD already terminated" msgstr "" -#: GuiAutoImport.py:271 +#: GuiAutoImport.py:283 msgid "Browse..." msgstr "" -#: GuiAutoImport.py:314 GuiBulkImport.py:346 +#: GuiAutoImport.py:326 GuiBulkImport.py:354 msgid "How often to print a one-line status report (0 (default) means never)" msgstr "" -#: GuiBulkImport.py:59 +#: GuiBulkImport.py:67 msgid "" "\n" "Global lock taken ..." msgstr "" -#: GuiBulkImport.py:60 +#: GuiBulkImport.py:68 msgid "Importing..." msgstr "" -#: GuiBulkImport.py:109 +#: GuiBulkImport.py:117 msgid "GuiBulkImport.load done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" msgstr "" -#: GuiBulkImport.py:123 +#: GuiBulkImport.py:131 msgid "Import Complete" msgstr "" -#: GuiBulkImport.py:131 +#: GuiBulkImport.py:139 msgid "bulk-import aborted - global lock not available" msgstr "" -#: GuiBulkImport.py:157 +#: GuiBulkImport.py:165 msgid "Print Start/Stop Info" msgstr "" -#: GuiBulkImport.py:164 +#: GuiBulkImport.py:172 msgid "Hands/status print:" msgstr "" -#: GuiBulkImport.py:181 +#: GuiBulkImport.py:189 msgid "Number of threads:" msgstr "" -#: GuiBulkImport.py:201 +#: GuiBulkImport.py:209 msgid "Fail on error" msgstr "" -#: GuiBulkImport.py:206 +#: GuiBulkImport.py:214 msgid "Hands/file:" msgstr "" -#: GuiBulkImport.py:221 +#: GuiBulkImport.py:229 msgid "Drop indexes:" msgstr "" -#: GuiBulkImport.py:230 GuiBulkImport.py:280 +#: GuiBulkImport.py:238 GuiBulkImport.py:288 msgid "auto" msgstr "" -#: GuiBulkImport.py:231 GuiBulkImport.py:281 GuiBulkImport.py:389 +#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:397 msgid "don't drop" msgstr "" -#: GuiBulkImport.py:232 GuiBulkImport.py:282 +#: GuiBulkImport.py:240 GuiBulkImport.py:290 msgid "drop" msgstr "" -#: GuiBulkImport.py:238 +#: GuiBulkImport.py:246 msgid "HUD Test mode" msgstr "" -#: GuiBulkImport.py:243 +#: GuiBulkImport.py:251 msgid "Site filter:" msgstr "" -#: GuiBulkImport.py:271 +#: GuiBulkImport.py:279 msgid "Drop HudCache:" msgstr "" -#: GuiBulkImport.py:289 +#: GuiBulkImport.py:297 msgid "Import" msgstr "" -#: GuiBulkImport.py:291 +#: GuiBulkImport.py:299 msgid "Import clicked" msgstr "" -#: GuiBulkImport.py:309 +#: GuiBulkImport.py:317 msgid "Waiting..." msgstr "" -#: GuiBulkImport.py:338 +#: GuiBulkImport.py:346 msgid "Input file in quiet mode" msgstr "" -#: GuiBulkImport.py:340 +#: GuiBulkImport.py:348 msgid "don't start gui; deprecated (just give a filename with -f)." msgstr "" -#: GuiBulkImport.py:342 +#: GuiBulkImport.py:350 msgid "Conversion filter (*Full Tilt Poker, PokerStars, Everleaf, Absolute)" msgstr "" -#: GuiBulkImport.py:344 +#: GuiBulkImport.py:352 msgid "If this option is passed it quits when it encounters any error" msgstr "" -#: GuiBulkImport.py:348 +#: GuiBulkImport.py:356 msgid "Print some useful one liners" msgstr "" -#: GuiBulkImport.py:350 +#: GuiBulkImport.py:358 msgid "Do the required conversion for Stars Archive format (ie. as provided by support" msgstr "" -#: GuiBulkImport.py:355 +#: GuiBulkImport.py:363 msgid "USAGE:" msgstr "" -#: GuiBulkImport.py:356 +#: GuiBulkImport.py:364 msgid "PokerStars converter: ./GuiBulkImport.py -c PokerStars -f filename" msgstr "" -#: GuiBulkImport.py:357 +#: GuiBulkImport.py:365 msgid "Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" msgstr "" -#: GuiBulkImport.py:358 +#: GuiBulkImport.py:366 msgid "Everleaf converter: ./GuiBulkImport.py -c Everleaf -f filename" msgstr "" -#: GuiBulkImport.py:359 +#: GuiBulkImport.py:367 msgid "Absolute converter: ./GuiBulkImport.py -c Absolute -f filename" msgstr "" -#: GuiBulkImport.py:360 +#: GuiBulkImport.py:368 msgid "PartyPoker converter: ./GuiBulkImport.py -c PartyPoker -f filename" msgstr "" -#: GuiBulkImport.py:376 +#: GuiBulkImport.py:384 msgid "-q is deprecated. Just use \"-f filename\" instead" msgstr "" -#: GuiBulkImport.py:398 +#: GuiBulkImport.py:406 msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" msgstr "" -#: GuiDatabase.py:98 GuiLogView.py:88 +#: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" msgstr "" -#: GuiDatabase.py:103 +#: GuiDatabase.py:111 msgid "Type" msgstr "" -#: GuiDatabase.py:104 +#: GuiDatabase.py:112 msgid "Name" msgstr "" -#: GuiDatabase.py:105 +#: GuiDatabase.py:113 msgid "Description" msgstr "" -#: GuiDatabase.py:106 GuiImapFetcher.py:111 +#: GuiDatabase.py:114 GuiImapFetcher.py:123 msgid "Username" msgstr "" -#: GuiDatabase.py:107 GuiImapFetcher.py:111 +#: GuiDatabase.py:115 GuiImapFetcher.py:123 msgid "Password" msgstr "" -#: GuiDatabase.py:108 +#: GuiDatabase.py:116 msgid "Host" msgstr "" -#: GuiDatabase.py:109 +#: GuiDatabase.py:117 msgid "Default" msgstr "" -#: GuiDatabase.py:110 +#: GuiDatabase.py:118 msgid "Status" msgstr "" -#: GuiDatabase.py:243 +#: GuiDatabase.py:251 msgid "Testing database connections ... " msgstr "" -#: GuiDatabase.py:273 +#: GuiDatabase.py:281 msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" msgstr "" -#: GuiDatabase.py:276 +#: GuiDatabase.py:284 msgid " connected ok" msgstr "" -#: GuiDatabase.py:283 +#: GuiDatabase.py:291 msgid " not connected but no exception" msgstr "" -#: GuiDatabase.py:285 fpdb.pyw:904 +#: GuiDatabase.py:293 fpdb.pyw:906 msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" -#: GuiDatabase.py:289 +#: GuiDatabase.py:297 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started" msgstr "" -#: GuiDatabase.py:293 fpdb.pyw:909 +#: GuiDatabase.py:301 fpdb.pyw:911 msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" msgstr "" -#: GuiDatabase.py:296 +#: GuiDatabase.py:304 msgid "Postgres client reports: Unable to connect - Please check that the Postgres service has been started" msgstr "" -#: GuiDatabase.py:313 +#: GuiDatabase.py:321 msgid "finished." msgstr "" -#: GuiDatabase.py:323 +#: GuiDatabase.py:331 msgid "loaddbs error: " msgstr "" -#: GuiDatabase.py:344 GuiLogView.py:192 GuiTourneyPlayerStats.py:454 +#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 msgid "***sortCols error: " msgstr "" -#: GuiDatabase.py:346 +#: GuiDatabase.py:354 msgid "sortCols error: " msgstr "" -#: GuiDatabase.py:416 GuiLogView.py:205 +#: GuiDatabase.py:424 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "" -#: GuiDatabase.py:421 GuiLogView.py:210 +#: GuiDatabase.py:429 GuiLogView.py:218 msgid "Log Viewer" msgstr "" @@ -581,135 +881,136 @@ msgid "" " and HUD are NOT affected by this problem." msgstr "" -#: GuiGraphViewer.py:129 GuiGraphViewer.py:243 GuiSessionViewer.py:343 +#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:355 msgid "***Error: " msgstr "" -#: GuiGraphViewer.py:159 GuiPositionalStats.py:166 GuiSessionViewer.py:192 -#: GuiTourneyPlayerStats.py:265 +#: GuiGraphViewer.py:171 GuiPositionalStats.py:178 GuiRingPlayerStats.py:252 +#: GuiSessionViewer.py:204 GuiTourneyPlayerStats.py:277 msgid "No sites selected - defaulting to PokerStars" msgstr "" -#: GuiGraphViewer.py:164 GuiPositionalStats.py:169 GuiSessionViewer.py:195 -#: GuiTourneyPlayerStats.py:268 +#: GuiGraphViewer.py:176 GuiPositionalStats.py:181 GuiRingPlayerStats.py:255 +#: GuiSessionViewer.py:207 GuiTourneyPlayerStats.py:280 msgid "No player ids found" msgstr "" -#: GuiGraphViewer.py:169 GuiPositionalStats.py:172 GuiSessionViewer.py:198 +#: GuiGraphViewer.py:181 GuiPositionalStats.py:184 GuiRingPlayerStats.py:258 +#: GuiSessionViewer.py:210 msgid "No limits found" msgstr "" -#: GuiGraphViewer.py:179 +#: GuiGraphViewer.py:191 msgid "Graph generated in: %s" msgstr "" -#: GuiGraphViewer.py:183 +#: GuiGraphViewer.py:195 msgid "Hands" msgstr "" -#: GuiGraphViewer.py:187 +#: GuiGraphViewer.py:199 msgid "No Data for Player(s) Found" msgstr "" -#: GuiGraphViewer.py:210 GuiGraphViewer.py:229 +#: GuiGraphViewer.py:222 GuiGraphViewer.py:241 msgid "" "Hands: %d\n" "Profit: $%.2f" msgstr "" -#: GuiGraphViewer.py:211 GuiGraphViewer.py:230 +#: GuiGraphViewer.py:223 GuiGraphViewer.py:242 msgid "Showdown: $%.2f" msgstr "" -#: GuiGraphViewer.py:212 GuiGraphViewer.py:231 +#: GuiGraphViewer.py:224 GuiGraphViewer.py:243 msgid "Non-showdown: $%.2f" msgstr "" -#: GuiGraphViewer.py:220 +#: GuiGraphViewer.py:232 msgid "Profit graph for ring games" msgstr "" -#: GuiGraphViewer.py:340 +#: GuiGraphViewer.py:352 msgid "Please choose the directory you wish to export to:" msgstr "" -#: GuiGraphViewer.py:353 +#: GuiGraphViewer.py:365 msgid "Closed, no graph exported" msgstr "" -#: GuiGraphViewer.py:371 +#: GuiGraphViewer.py:383 msgid "Graph created" msgstr "" -#: GuiImapFetcher.py:37 +#: GuiImapFetcher.py:49 msgid "To cancel just close this tab." msgstr "" -#: GuiImapFetcher.py:40 +#: GuiImapFetcher.py:52 msgid "_Save" msgstr "" -#: GuiImapFetcher.py:44 +#: GuiImapFetcher.py:56 msgid "_Import All" msgstr "" -#: GuiImapFetcher.py:48 +#: GuiImapFetcher.py:60 msgid "If you change the config you must save before importing" msgstr "" -#: GuiImapFetcher.py:91 +#: GuiImapFetcher.py:103 msgid "Starting import. Please wait." msgstr "" -#: GuiImapFetcher.py:95 +#: GuiImapFetcher.py:107 msgid "Finished import without error." msgstr "" -#: GuiImapFetcher.py:98 +#: GuiImapFetcher.py:110 msgid "Login to mailserver failed: please check mailserver, username and password" msgstr "" -#: GuiImapFetcher.py:101 +#: GuiImapFetcher.py:113 msgid "Could not connect to mailserver: check mailserver and use SSL settings and internet connectivity" msgstr "" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Fetch Type" msgstr "" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Mail Folder" msgstr "" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Mailserver" msgstr "" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Site" msgstr "" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Use SSL" msgstr "" -#: GuiImapFetcher.py:142 +#: GuiImapFetcher.py:154 msgid "Yes" msgstr "" -#: GuiImapFetcher.py:143 +#: GuiImapFetcher.py:155 msgid "No" msgstr "" -#: GuiLogView.py:53 +#: GuiLogView.py:61 msgid "Log Messages" msgstr "" -#: GuiPositionalStats.py:135 +#: GuiPositionalStats.py:147 msgid "DEBUG: activesite set to %s" msgstr "" -#: GuiPositionalStats.py:321 +#: GuiPositionalStats.py:333 msgid "Positional Stats page displayed in %4.2f seconds" msgstr "" @@ -725,10 +1026,39 @@ msgstr "" msgid "Test Preferences Dialog" msgstr "" -#: GuiPrefs.py:181 fpdb.pyw:294 +#: GuiPrefs.py:181 fpdb.pyw:296 msgid "Preferences" msgstr "" +#: GuiRingPlayerStats.py:323 GuiSessionViewer.py:249 +#: GuiTourneyPlayerStats.py:252 +msgid "Stats page displayed in %4.2f seconds" +msgstr "" + +#: GuiRingPlayerStats.py:370 +msgid "***sortnums error: " +msgstr "" + +#: GuiRingPlayerStats.py:392 +msgid "***sortcols error: " +msgstr "" + +#: GuiRingPlayerStats.py:683 +msgid "Detailed Filters" +msgstr "" + +#: GuiRingPlayerStats.py:692 +msgid "Hand Filters:" +msgstr "" + +#: GuiRingPlayerStats.py:705 +msgid "between" +msgstr "" + +#: GuiRingPlayerStats.py:706 +msgid "and" +msgstr "" + #: GuiSessionViewer.py:41 msgid "Failed to load numpy and/or matplotlib in Session Viewer" msgstr "" @@ -737,132 +1067,128 @@ msgstr "" msgid "ImportError: %s" msgstr "" -#: GuiSessionViewer.py:78 +#: GuiSessionViewer.py:90 msgid "Hand Breakdown for all levels listed above" msgstr "" -#: GuiSessionViewer.py:237 GuiTourneyPlayerStats.py:240 -msgid "Stats page displayed in %4.2f seconds" -msgstr "" - -#: GuiSessionViewer.py:364 +#: GuiSessionViewer.py:376 msgid "Session candlestick graph" msgstr "" -#: GuiSessionViewer.py:367 +#: GuiSessionViewer.py:379 msgid "Sessions" msgstr "" -#: GuiTourneyPlayerStats.py:72 +#: GuiTourneyPlayerStats.py:84 msgid "_Refresh Stats" msgstr "" -#: GuiTourneyViewer.py:37 +#: GuiTourneyViewer.py:49 msgid "Enter the tourney number you want to display:" msgstr "" -#: GuiTourneyViewer.py:43 +#: GuiTourneyViewer.py:55 msgid "_Display" msgstr "" -#: GuiTourneyViewer.py:50 +#: GuiTourneyViewer.py:62 msgid "Display _Player" msgstr "" -#: GuiTourneyViewer.py:65 +#: GuiTourneyViewer.py:77 msgid "Tournament not found - please ensure you imported it and selected the correct site" msgstr "" -#: GuiTourneyViewer.py:93 +#: GuiTourneyViewer.py:105 msgid "Player or tourney not found - please ensure you imported it and selected the correct site" msgstr "" -#: GuiTourneyViewer.py:107 +#: GuiTourneyViewer.py:119 msgid "N/A" msgstr "" -#: GuiTourneyViewer.py:128 +#: GuiTourneyViewer.py:140 msgid "invalid entry in tourney number - must enter numbers only" msgstr "" -#: HUD_main.pyw:77 +#: HUD_main.pyw:86 msgid "" "\n" "HUD_main: starting ..." msgstr "" -#: HUD_main.pyw:80 fpdb.pyw:874 +#: HUD_main.pyw:89 fpdb.pyw:876 msgid "Logfile is " msgstr "" -#: HUD_main.pyw:81 +#: HUD_main.pyw:90 msgid "HUD_main starting: using db name = %s" msgstr "" -#: HUD_main.pyw:86 +#: HUD_main.pyw:95 msgid "" "Note: error output is being diverted to:\n" msgstr "" -#: HUD_main.pyw:87 fpdb.pyw:1136 +#: HUD_main.pyw:96 fpdb.pyw:1138 msgid "" "\n" "Any major error will be reported there _only_.\n" msgstr "" -#: HUD_main.pyw:88 +#: HUD_main.pyw:97 msgid "Note: error output is being diverted to:" msgstr "" -#: HUD_main.pyw:89 +#: HUD_main.pyw:98 msgid "Any major error will be reported there _only_." msgstr "" -#: HUD_main.pyw:92 +#: HUD_main.pyw:101 msgid "" "HUD_main: starting ...\n" msgstr "" -#: HUD_main.pyw:105 HUD_run_me.py:62 +#: HUD_main.pyw:114 HUD_run_me.py:62 msgid "Closing this window will exit from the HUD." msgstr "" -#: HUD_main.pyw:108 HUD_run_me.py:66 +#: HUD_main.pyw:117 HUD_run_me.py:66 msgid "HUD Main Window" msgstr "" -#: HUD_main.pyw:117 +#: HUD_main.pyw:126 msgid "Terminating normally." msgstr "" -#: HUD_main.pyw:221 +#: HUD_main.pyw:230 msgid "Received hand no %s" msgstr "" -#: HUD_main.pyw:240 +#: HUD_main.pyw:249 msgid "HUD_main.read_stdin: hand processing starting ..." msgstr "" -#: HUD_main.pyw:266 +#: HUD_main.pyw:275 msgid "" "hud_dict[%s] was not found\n" msgstr "" -#: HUD_main.pyw:267 +#: HUD_main.pyw:276 msgid "" "will not send hand\n" msgstr "" -#: HUD_main.pyw:301 +#: HUD_main.pyw:310 msgid "HUD create: table name %s not found, skipping." msgstr "" -#: HUD_main.pyw:309 +#: HUD_main.pyw:318 msgid "" "Table \"%s\" no longer exists\n" msgstr "" -#: HUD_main.pyw:312 +#: HUD_main.pyw:321 msgid "HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)" msgstr "" @@ -871,432 +1197,432 @@ msgid "" "HUD_main starting\n" msgstr "" -#: HUD_run_me.py:51 +#: HUD_run_me.py:51 TournamentTracker.py:317 msgid "" "Using db name = %s\n" msgstr "" -#: Hand.py:138 +#: Hand.py:150 msgid "BB" msgstr "" -#: Hand.py:139 +#: Hand.py:151 msgid "SB" msgstr "" -#: Hand.py:140 +#: Hand.py:152 msgid "BUTTONPOS" msgstr "" -#: Hand.py:141 +#: Hand.py:153 msgid "HAND NO." msgstr "" -#: Hand.py:142 +#: Hand.py:154 TourneySummary.py:134 msgid "SITE" msgstr "" -#: Hand.py:143 +#: Hand.py:155 msgid "TABLE NAME" msgstr "" -#: Hand.py:144 +#: Hand.py:156 TourneySummary.py:144 msgid "HERO" msgstr "" -#: Hand.py:145 +#: Hand.py:157 TourneySummary.py:145 msgid "MAXSEATS" msgstr "" -#: Hand.py:146 +#: Hand.py:158 msgid "LEVEL" msgstr "" -#: Hand.py:147 +#: Hand.py:159 TourneySummary.py:150 msgid "MIXED" msgstr "" -#: Hand.py:148 +#: Hand.py:160 msgid "LASTBET" msgstr "" -#: Hand.py:149 +#: Hand.py:161 msgid "ACTION STREETS" msgstr "" -#: Hand.py:150 +#: Hand.py:162 msgid "STREETS" msgstr "" -#: Hand.py:151 +#: Hand.py:163 msgid "ALL STREETS" msgstr "" -#: Hand.py:152 +#: Hand.py:164 msgid "COMMUNITY STREETS" msgstr "" -#: Hand.py:153 +#: Hand.py:165 msgid "HOLE STREETS" msgstr "" -#: Hand.py:154 +#: Hand.py:166 msgid "COUNTED SEATS" msgstr "" -#: Hand.py:155 +#: Hand.py:167 msgid "DEALT" msgstr "" -#: Hand.py:156 +#: Hand.py:168 msgid "SHOWN" msgstr "" -#: Hand.py:157 +#: Hand.py:169 msgid "MUCKED" msgstr "" -#: Hand.py:158 +#: Hand.py:170 msgid "TOTAL POT" msgstr "" -#: Hand.py:159 +#: Hand.py:171 msgid "TOTAL COLLECTED" msgstr "" -#: Hand.py:160 +#: Hand.py:172 msgid "RAKE" msgstr "" -#: Hand.py:161 +#: Hand.py:173 TourneySummary.py:135 msgid "START TIME" msgstr "" -#: Hand.py:162 +#: Hand.py:174 msgid "TOURNAMENT NO" msgstr "" -#: Hand.py:163 +#: Hand.py:175 TourneySummary.py:140 msgid "TOURNEY ID" msgstr "" -#: Hand.py:164 +#: Hand.py:176 TourneySummary.py:139 msgid "TOURNEY TYPE ID" msgstr "" -#: Hand.py:165 +#: Hand.py:177 TourneySummary.py:141 msgid "BUYIN" msgstr "" -#: Hand.py:166 +#: Hand.py:178 msgid "BUYIN CURRENCY" msgstr "" -#: Hand.py:167 +#: Hand.py:179 msgid "BUYIN CHIPS" msgstr "" -#: Hand.py:168 +#: Hand.py:180 TourneySummary.py:142 msgid "FEE" msgstr "" -#: Hand.py:169 +#: Hand.py:181 msgid "IS REBUY" msgstr "" -#: Hand.py:170 +#: Hand.py:182 msgid "IS ADDON" msgstr "" -#: Hand.py:171 +#: Hand.py:183 msgid "IS KO" msgstr "" -#: Hand.py:172 +#: Hand.py:184 TourneySummary.py:166 msgid "KO BOUNTY" msgstr "" -#: Hand.py:173 +#: Hand.py:185 msgid "IS MATRIX" msgstr "" -#: Hand.py:174 +#: Hand.py:186 msgid "IS SHOOTOUT" msgstr "" -#: Hand.py:175 +#: Hand.py:187 TourneySummary.py:167 msgid "TOURNEY COMMENT" msgstr "" -#: Hand.py:178 +#: Hand.py:190 TourneySummary.py:179 msgid "PLAYERS" msgstr "" -#: Hand.py:179 +#: Hand.py:191 msgid "STACKS" msgstr "" -#: Hand.py:180 +#: Hand.py:192 msgid "POSTED" msgstr "" -#: Hand.py:181 +#: Hand.py:193 msgid "POT" msgstr "" -#: Hand.py:182 +#: Hand.py:194 msgid "SEATING" msgstr "" -#: Hand.py:183 +#: Hand.py:195 msgid "GAMETYPE" msgstr "" -#: Hand.py:184 +#: Hand.py:196 msgid "ACTION" msgstr "" -#: Hand.py:185 +#: Hand.py:197 msgid "COLLECTEES" msgstr "" -#: Hand.py:186 +#: Hand.py:198 msgid "BETS" msgstr "" -#: Hand.py:187 +#: Hand.py:199 msgid "BOARD" msgstr "" -#: Hand.py:188 +#: Hand.py:200 msgid "DISCARDS" msgstr "" -#: Hand.py:189 +#: Hand.py:201 msgid "HOLECARDS" msgstr "" -#: Hand.py:190 +#: Hand.py:202 msgid "TOURNEYS PLAYER IDS" msgstr "" -#: Hand.py:213 Hand.py:1232 +#: Hand.py:225 Hand.py:1244 msgid "[ERROR] Tried to add holecards for unknown player: %s" msgstr "" -#: Hand.py:266 +#: Hand.py:278 msgid "Hand.insert(): hid #: %s is a duplicate" msgstr "" -#: Hand.py:305 +#: Hand.py:317 msgid "markstreets didn't match - Assuming hand cancelled" msgstr "" -#: Hand.py:307 +#: Hand.py:319 msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" msgstr "" -#: Hand.py:311 +#: Hand.py:323 msgid "DEBUG: checkPlayerExists %s fail" msgstr "" -#: Hand.py:312 +#: Hand.py:324 msgid "checkPlayerExists: '%s' failed." msgstr "" -#: Hand.py:395 +#: Hand.py:407 msgid "%s %s calls %s" msgstr "" -#: Hand.py:465 +#: Hand.py:477 msgid "%s %s raise %s" msgstr "" -#: Hand.py:476 +#: Hand.py:488 msgid "%s %s bets %s" msgstr "" -#: Hand.py:495 +#: Hand.py:507 msgid "%s %s folds" msgstr "" -#: Hand.py:504 +#: Hand.py:516 msgid "%s %s checks" msgstr "" -#: Hand.py:524 +#: Hand.py:536 msgid "addShownCards %s hole=%s all=%s" msgstr "" -#: Hand.py:635 +#: Hand.py:647 msgid "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, expecting datetime.date object, received:" msgstr "" -#: Hand.py:636 +#: Hand.py:648 msgid "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" -#: Hand.py:637 +#: Hand.py:649 msgid "*** Game String:" msgstr "" -#: Hand.py:691 +#: Hand.py:703 msgid "*** Parse error reading blinds (check compilePlayerRegexs as a likely culprit)" msgstr "" -#: Hand.py:718 +#: Hand.py:730 msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" msgstr "" -#: Hand.py:720 +#: Hand.py:732 msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" msgstr "" -#: Hand.py:1101 +#: Hand.py:1113 msgid "*** DEALING HANDS ***" msgstr "" -#: Hand.py:1106 +#: Hand.py:1118 msgid "Dealt to %s: [%s]" msgstr "" -#: Hand.py:1111 +#: Hand.py:1123 msgid "*** FIRST DRAW ***" msgstr "" -#: Hand.py:1121 +#: Hand.py:1133 msgid "*** SECOND DRAW ***" msgstr "" -#: Hand.py:1131 +#: Hand.py:1143 msgid "*** THIRD DRAW ***" msgstr "" -#: Hand.py:1141 Hand.py:1359 +#: Hand.py:1153 Hand.py:1371 msgid "*** SHOW DOWN ***" msgstr "" -#: Hand.py:1156 Hand.py:1374 +#: Hand.py:1168 Hand.py:1386 msgid "*** SUMMARY ***" msgstr "" -#: Hand.py:1241 +#: Hand.py:1253 msgid "%s %s completes %s" msgstr "" -#: Hand.py:1259 +#: Hand.py:1271 msgid "Bringin: %s, %s" msgstr "" -#: Hand.py:1299 +#: Hand.py:1311 msgid "*** 3RD STREET ***" msgstr "" -#: Hand.py:1313 +#: Hand.py:1325 msgid "*** 4TH STREET ***" msgstr "" -#: Hand.py:1325 +#: Hand.py:1337 msgid "*** 5TH STREET ***" msgstr "" -#: Hand.py:1337 +#: Hand.py:1349 msgid "*** 6TH STREET ***" msgstr "" -#: Hand.py:1347 +#: Hand.py:1359 msgid "*** RIVER ***" msgstr "" -#: Hand.py:1439 +#: Hand.py:1451 msgid "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should be impossible for anyone who is not a hero" msgstr "" -#: Hand.py:1440 +#: Hand.py:1452 msgid "join_holcards: holecards(%s): %s" msgstr "" -#: Hand.py:1523 +#: Hand.py:1535 msgid "DEBUG: call Pot.end() before printing pot total" msgstr "" -#: Hand.py:1525 +#: Hand.py:1537 msgid "FpdbError in printing Hand object" msgstr "" -#: HandHistoryConverter.py:126 +#: HandHistoryConverter.py:134 msgid "Failed sanity check" msgstr "" -#: HandHistoryConverter.py:134 +#: HandHistoryConverter.py:142 msgid "Tailing '%s'" msgstr "" -#: HandHistoryConverter.py:141 +#: HandHistoryConverter.py:149 msgid "HHC.start(follow): processHand failed: Exception msg: '%s'" msgstr "" -#: HandHistoryConverter.py:155 +#: HandHistoryConverter.py:163 msgid "HHC.start(): processHand failed: Exception msg: '%s'" msgstr "" -#: HandHistoryConverter.py:159 +#: HandHistoryConverter.py:167 msgid "Read %d hands (%d failed) in %.3f seconds" msgstr "" -#: HandHistoryConverter.py:165 +#: HandHistoryConverter.py:173 msgid "Summary file '%s' correctly parsed (took %.3f seconds)" msgstr "" -#: HandHistoryConverter.py:167 +#: HandHistoryConverter.py:175 msgid "Error converting summary file '%s' (took %.3f seconds)" msgstr "" -#: HandHistoryConverter.py:170 +#: HandHistoryConverter.py:178 msgid "Error converting '%s'" msgstr "" -#: HandHistoryConverter.py:201 +#: HandHistoryConverter.py:209 msgid "%s changed inode numbers from %d to %d" msgstr "" -#: HandHistoryConverter.py:246 +#: HandHistoryConverter.py:254 msgid "Converting starsArchive format to readable" msgstr "" -#: HandHistoryConverter.py:251 +#: HandHistoryConverter.py:259 msgid "Converting ftpArchive format to readable" msgstr "" -#: HandHistoryConverter.py:256 +#: HandHistoryConverter.py:264 msgid "Read no hands." msgstr "" -#: HandHistoryConverter.py:393 +#: HandHistoryConverter.py:401 msgid "HH Sanity Check: output and input files are the same, check config" msgstr "" -#: HandHistoryConverter.py:428 +#: HandHistoryConverter.py:436 msgid "Reading stdin with %s" msgstr "" -#: HandHistoryConverter.py:443 +#: HandHistoryConverter.py:451 msgid "unable to read file with any codec in list!" msgstr "" -#: HandHistoryConverter.py:597 +#: HandHistoryConverter.py:605 msgid "Unable to create output directory %s for HHC!" msgstr "" -#: HandHistoryConverter.py:598 +#: HandHistoryConverter.py:606 msgid "*** ERROR: UNABLE TO CREATE OUTPUT DIRECTORY" msgstr "" -#: HandHistoryConverter.py:600 +#: HandHistoryConverter.py:608 msgid "Created directory '%s'" msgstr "" -#: HandHistoryConverter.py:604 +#: HandHistoryConverter.py:612 msgid "out_path %s couldn't be opened" msgstr "" @@ -1323,143 +1649,11 @@ msgid "" " on %s." msgstr "" -#: Hud.py:137 -msgid "Kill This HUD" -msgstr "" - -#: Hud.py:142 -msgid "Save HUD Layout" -msgstr "" - -#: Hud.py:146 -msgid "Reposition StatWindows" -msgstr "" - -#: Hud.py:150 -msgid "Show Player Stats" -msgstr "" - -#: Hud.py:155 Hud.py:224 -msgid "For This Blind Level Only" -msgstr "" - -#: Hud.py:160 Hud.py:229 -msgid "For Multiple Blind Levels:" -msgstr "" - -#: Hud.py:163 Hud.py:232 -msgid " 0.5 to 2.0 x Current Blinds" -msgstr "" - -#: Hud.py:168 Hud.py:237 -msgid " 0.33 to 3.0 x Current Blinds" -msgstr "" - -#: Hud.py:173 Hud.py:242 -msgid " 0.1 to 10 x Current Blinds" -msgstr "" - -#: Hud.py:178 Hud.py:247 -msgid " All Levels" -msgstr "" - -#: Hud.py:186 Hud.py:255 -msgid " Any Number" -msgstr "" - -#: Hud.py:191 Hud.py:260 -msgid " Custom" -msgstr "" - -#: Hud.py:196 Hud.py:265 -msgid " Exact" -msgstr "" - -#: Hud.py:201 Hud.py:270 -msgid "Since:" -msgstr "" - -#: Hud.py:204 Hud.py:273 -msgid " All Time" -msgstr "" - -#: Hud.py:209 Hud.py:278 -msgid " Session" -msgstr "" - -#: Hud.py:214 Hud.py:283 -msgid " %s Days" -msgstr "" - -#: Hud.py:219 -msgid "Show Opponent Stats" -msgstr "" - -#: Hud.py:252 -msgid "For #Seats:" -msgstr "" - -#: Hud.py:341 -msgid "Debug StatWindows" -msgstr "" - -#: Hud.py:345 -msgid "Set max seats" -msgstr "" - -#: Hud.py:528 -msgid "Updating config file" -msgstr "" - -#: Hud.py:537 -msgid "" -"No layout found for %d-max games for site %s\n" -msgstr "" - -#: Hud.py:551 -msgid "" -"exception in Hud.adj_seats\n" -"\n" -msgstr "" - -#: Hud.py:552 -msgid "error is %s" -msgstr "" - -#: Hud.py:559 -msgid "" -"Error finding actual seat.\n" -msgstr "" - -#: Hud.py:575 -msgid "" -"------------------------------------------------------------\n" -"Creating hud from hand %s\n" -msgstr "" - -#: Hud.py:624 -msgid "KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric" -msgstr "" - -#: Hud.py:625 -msgid "(btw, the key was %s and statd is %s" -msgstr "" - -#: Hud.py:932 -msgid "" -"Fake main window, blah blah, blah\n" -"blah, blah" -msgstr "" - -#: Hud.py:940 -msgid "Table not found." -msgstr "" - -#: ImapFetcher.py:46 +#: ImapFetcher.py:54 msgid "response to logging in:" msgstr "" -#: ImapFetcher.py:78 +#: ImapFetcher.py:86 msgid "completed running Imap import, closing server connection" msgstr "" @@ -1467,39 +1661,39 @@ msgstr "" msgid "No Name" msgstr "" -#: Options.py:32 +#: Options.py:40 msgid "If passed error output will go to the console rather than ." msgstr "" -#: Options.py:35 +#: Options.py:43 msgid "Overrides the default database name" msgstr "" -#: Options.py:38 +#: Options.py:46 msgid "Specifies a configuration file." msgstr "" -#: Options.py:41 +#: Options.py:49 msgid "Indicates program was restarted with a different path (only allowed once)." msgstr "" -#: Options.py:44 +#: Options.py:52 msgid "Input file" msgstr "" -#: Options.py:47 +#: Options.py:55 msgid "Module name for Hand History Converter" msgstr "" -#: Options.py:51 +#: Options.py:59 msgid "Error logging level:" msgstr "" -#: Options.py:54 +#: Options.py:62 msgid "Print version information and exit." msgstr "" -#: Options.py:65 +#: Options.py:73 msgid "press enter to end" msgstr "" @@ -1507,6 +1701,38 @@ msgstr "" msgid "You need to manually enter the playername" msgstr "" +#: PartyPokerToFpdb.py:215 +msgid "Cannot fetch field '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:219 +msgid "Unknown limit '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:224 +msgid "Unknown game type '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:258 +msgid "Cannot read HID for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:263 +msgid "Cannot read Handinfo for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:268 +msgid "Cannot read GameType for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +msgid "readButton: not found" +msgstr "" + +#: PartyPokerToFpdb.py:479 +msgid "Unimplemented readAction: '%s' '%s'" +msgstr "" + #: PokerStarsSummary.py:72 msgid "didn't recognise buyin currency in:" msgstr "" @@ -1515,46 +1741,286 @@ msgstr "" msgid "in not result starttime" msgstr "" -#: PokerStarsToFpdb.py:172 +#: PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "" -#: PokerStarsToFpdb.py:173 PokerStarsToFpdb.py:203 +#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "" -#: PokerStarsToFpdb.py:174 +#: PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "" -#: PokerStarsToFpdb.py:204 +#: PokerStarsToFpdb.py:221 msgid "Lim_Blinds has no lookup for '%s'" msgstr "" -#: PokerStarsToFpdb.py:256 +#: PokerStarsToFpdb.py:273 msgid "failed to detect currency" msgstr "" -#: PokerStarsToFpdb.py:303 -msgid "readButton: not found" -msgstr "" - -#: PokerStarsToFpdb.py:341 +#: PokerStarsToFpdb.py:358 msgid "reading antes" msgstr "" -#: Tables_Demo.py:64 +#: Tables.py:234 +msgid "Found unknown table = %s" +msgstr "" + +#: Tables.py:261 +msgid "attach to window" +msgstr "" + +#: Tables_Demo.py:72 msgid "Fake HUD Main Window" msgstr "" -#: Tables_Demo.py:87 +#: Tables_Demo.py:95 msgid "enter table name to find: " msgstr "" -#: Tables_Demo.py:112 +#: Tables_Demo.py:120 msgid "calling main" msgstr "" +#: TournamentTracker.py:50 +msgid "Note: error output is being diverted to fpdb-error-log.txt and HUD-error.txt. Any major error will be reported there _only_." +msgstr "" + +#: TournamentTracker.py:111 +msgid "tournament edit window=" +msgstr "" + +#: TournamentTracker.py:114 +msgid "FPDB Tournament Entry" +msgstr "" + +#: TournamentTracker.py:154 +msgid "Closing this window will stop the Tournament Tracker" +msgstr "" + +#: TournamentTracker.py:156 +msgid "Enter Tournament" +msgstr "" + +#: TournamentTracker.py:161 +msgid "FPDB Tournament Tracker" +msgstr "" + +#: TournamentTracker.py:172 +msgid "Edit" +msgstr "" + +#: TournamentTracker.py:175 +msgid "Rebuy" +msgstr "" + +#: TournamentTracker.py:274 +msgid "db error: skipping " +msgstr "" + +#: TournamentTracker.py:276 +msgid "" +"Database error %s in hand %d. Skipping.\n" +msgstr "" + +#: TournamentTracker.py:285 +msgid "could not find tournament: skipping" +msgstr "" + +#: TournamentTracker.py:286 +msgid "" +"Could not find tournament %d in hand %d. Skipping.\n" +msgstr "" + +#: TournamentTracker.py:309 +msgid "" +"table name %s not found, skipping.\n" +msgstr "" + +#: TournamentTracker.py:316 +msgid "" +"tournament tracker starting\n" +msgstr "" + +#: TourneyFilters.py:61 +msgid "Tourney Type" +msgstr "" + +#: TourneyFilters.py:88 +msgid "setting numTourneys:" +msgstr "" + +#: TourneySummary.py:136 +msgid "END TIME" +msgstr "" + +#: TourneySummary.py:137 +msgid "TOURNEY NAME" +msgstr "" + +#: TourneySummary.py:138 +msgid "TOURNEY NO" +msgstr "" + +#: TourneySummary.py:143 +msgid "CURRENCY" +msgstr "" + +#: TourneySummary.py:146 +msgid "ENTRIES" +msgstr "" + +#: TourneySummary.py:147 +msgid "SPEED" +msgstr "" + +#: TourneySummary.py:148 +msgid "PRIZE POOL" +msgstr "" + +#: TourneySummary.py:149 +msgid "STARTING CHIP COUNT" +msgstr "" + +#: TourneySummary.py:151 +msgid "REBUY" +msgstr "" + +#: TourneySummary.py:152 +msgid "ADDON" +msgstr "" + +#: TourneySummary.py:153 +msgid "KO" +msgstr "" + +#: TourneySummary.py:154 +msgid "MATRIX" +msgstr "" + +#: TourneySummary.py:155 +msgid "MATRIX ID PROCESSED" +msgstr "" + +#: TourneySummary.py:156 +msgid "SHOOTOUT" +msgstr "" + +#: TourneySummary.py:157 +msgid "MATRIX MATCH ID" +msgstr "" + +#: TourneySummary.py:158 +msgid "SUB TOURNEY BUY IN" +msgstr "" + +#: TourneySummary.py:159 +msgid "SUB TOURNEY FEE" +msgstr "" + +#: TourneySummary.py:160 +msgid "REBUY CHIPS" +msgstr "" + +#: TourneySummary.py:161 +msgid "ADDON CHIPS" +msgstr "" + +#: TourneySummary.py:162 +msgid "REBUY COST" +msgstr "" + +#: TourneySummary.py:163 +msgid "ADDON COST" +msgstr "" + +#: TourneySummary.py:164 +msgid "TOTAL REBUYS" +msgstr "" + +#: TourneySummary.py:165 +msgid "TOTAL ADDONS" +msgstr "" + +#: TourneySummary.py:168 +msgid "SNG" +msgstr "" + +#: TourneySummary.py:169 +msgid "SATELLITE" +msgstr "" + +#: TourneySummary.py:170 +msgid "DOUBLE OR NOTHING" +msgstr "" + +#: TourneySummary.py:171 +msgid "GUARANTEE" +msgstr "" + +#: TourneySummary.py:172 +msgid "ADDED" +msgstr "" + +#: TourneySummary.py:173 +msgid "ADDED CURRENCY" +msgstr "" + +#: TourneySummary.py:174 +msgid "COMMENT" +msgstr "" + +#: TourneySummary.py:175 +msgid "COMMENT TIMESTAMP" +msgstr "" + +#: TourneySummary.py:178 +msgid "PLAYER IDS" +msgstr "" + +#: TourneySummary.py:180 +msgid "TOURNEYS PLAYERS IDS" +msgstr "" + +#: TourneySummary.py:181 +msgid "RANKS" +msgstr "" + +#: TourneySummary.py:182 +msgid "WINNINGS" +msgstr "" + +#: TourneySummary.py:183 +msgid "WINNINGS CURRENCY" +msgstr "" + +#: TourneySummary.py:184 +msgid "COUNT REBUYS" +msgstr "" + +#: TourneySummary.py:185 +msgid "COUNT ADDONS" +msgstr "" + +#: TourneySummary.py:186 +msgid "NB OF KO" +msgstr "" + +#: TourneySummary.py:233 +msgid "Tourney Insert/Update done" +msgstr "" + +#: TourneySummary.py:253 +msgid "addPlayer: rank:%s - name : '%s' - Winnings (%s)" +msgstr "" + +#: TourneySummary.py:280 +msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" +msgstr "" + #: WinTables.py:70 msgid "Window %s not found. Skipping." msgstr "" @@ -1563,487 +2029,487 @@ msgstr "" msgid "self.window doesn't exist? why?" msgstr "" -#: fpdb.pyw:46 +#: fpdb.pyw:48 msgid "" " - press return to continue\n" msgstr "" -#: fpdb.pyw:53 +#: fpdb.pyw:55 msgid "" "\n" "python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" msgstr "" -#: fpdb.pyw:54 fpdb.pyw:66 fpdb.pyw:88 +#: fpdb.pyw:56 fpdb.pyw:68 fpdb.pyw:90 msgid "Press ENTER to continue." msgstr "" -#: fpdb.pyw:65 +#: fpdb.pyw:67 msgid "We appear to be running in Windows, but the Windows Python Extensions are not loading. Please install the PYWIN32 package from http://sourceforge.net/projects/pywin32/" msgstr "" -#: fpdb.pyw:87 +#: fpdb.pyw:89 msgid "Unable to load PYGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org." msgstr "" -#: fpdb.pyw:245 +#: fpdb.pyw:247 msgid "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, sqlcoder, Bostik, and others" msgstr "" -#: fpdb.pyw:246 +#: fpdb.pyw:248 msgid "You are free to change, and distribute original or changed versions of fpdb within the rules set out by the license" msgstr "" -#: fpdb.pyw:247 +#: fpdb.pyw:249 msgid "Please see fpdb's start screen for license information" msgstr "" -#: fpdb.pyw:251 +#: fpdb.pyw:253 msgid "and others" msgstr "" -#: fpdb.pyw:257 +#: fpdb.pyw:259 msgid "Operating System" msgstr "" -#: fpdb.pyw:277 +#: fpdb.pyw:279 msgid "Your config file is: " msgstr "" -#: fpdb.pyw:282 +#: fpdb.pyw:284 msgid "Version Information:" msgstr "" -#: fpdb.pyw:289 +#: fpdb.pyw:291 msgid "Threads: " msgstr "" -#: fpdb.pyw:312 +#: fpdb.pyw:314 msgid "Updated preferences have not been loaded because windows are open. Re-start fpdb to load them." msgstr "" -#: fpdb.pyw:322 +#: fpdb.pyw:324 msgid "Maintain Databases" msgstr "" -#: fpdb.pyw:332 +#: fpdb.pyw:334 msgid "saving updated db data" msgstr "" -#: fpdb.pyw:339 +#: fpdb.pyw:341 msgid "guidb response was " msgstr "" -#: fpdb.pyw:345 +#: fpdb.pyw:347 msgid "Cannot open Database Maintenance window because other windows have been opened. Re-start fpdb to use this option." msgstr "" -#: fpdb.pyw:348 +#: fpdb.pyw:350 msgid "Number of Hands: " msgstr "" -#: fpdb.pyw:349 +#: fpdb.pyw:351 msgid "" "\n" "Number of Tourneys: " msgstr "" -#: fpdb.pyw:350 +#: fpdb.pyw:352 msgid "" "\n" "Number of TourneyTypes: " msgstr "" -#: fpdb.pyw:351 +#: fpdb.pyw:353 msgid "Database Statistics" msgstr "" -#: fpdb.pyw:360 +#: fpdb.pyw:362 msgid "HUD Configurator - choose category" msgstr "" -#: fpdb.pyw:366 +#: fpdb.pyw:368 msgid "Please select the game category for which you want to configure HUD stats:" msgstr "" -#: fpdb.pyw:418 +#: fpdb.pyw:420 msgid "HUD Configurator - please choose your stats" msgstr "" -#: fpdb.pyw:424 +#: fpdb.pyw:426 msgid "Please choose the stats you wish to use in the below table." msgstr "" -#: fpdb.pyw:428 +#: fpdb.pyw:430 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" -#: fpdb.pyw:432 +#: fpdb.pyw:434 msgid "It is not currently possible to select \"empty\" or anything else to that end." msgstr "" -#: fpdb.pyw:436 +#: fpdb.pyw:438 msgid "To configure things like colouring you will still have to manually edit your HUD_config.xml." msgstr "" -#: fpdb.pyw:543 +#: fpdb.pyw:545 msgid "Confirm deleting and recreating tables" msgstr "" -#: fpdb.pyw:544 +#: fpdb.pyw:546 msgid "Please confirm that you want to (re-)create the tables. If there already are tables in the database " msgstr "" -#: fpdb.pyw:545 +#: fpdb.pyw:547 msgid "" " they will be deleted.\n" "This may take a while." msgstr "" -#: fpdb.pyw:570 +#: fpdb.pyw:572 msgid "User cancelled recreating tables" msgstr "" -#: fpdb.pyw:577 +#: fpdb.pyw:579 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" -#: fpdb.pyw:585 +#: fpdb.pyw:587 msgid " Hero's cache starts: " msgstr "" -#: fpdb.pyw:599 +#: fpdb.pyw:601 msgid " Villains' cache starts: " msgstr "" -#: fpdb.pyw:612 +#: fpdb.pyw:614 msgid " Rebuilding HUD Cache ... " msgstr "" -#: fpdb.pyw:620 +#: fpdb.pyw:622 msgid "User cancelled rebuilding hud cache" msgstr "" -#: fpdb.pyw:632 +#: fpdb.pyw:634 msgid "Confirm rebuilding database indexes" msgstr "" -#: fpdb.pyw:633 +#: fpdb.pyw:635 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" -#: fpdb.pyw:641 +#: fpdb.pyw:643 msgid " Rebuilding Indexes ... " msgstr "" -#: fpdb.pyw:648 +#: fpdb.pyw:650 msgid " Cleaning Database ... " msgstr "" -#: fpdb.pyw:653 +#: fpdb.pyw:655 msgid " Analyzing Database ... " msgstr "" -#: fpdb.pyw:658 +#: fpdb.pyw:660 msgid "User cancelled rebuilding db indexes" msgstr "" -#: fpdb.pyw:753 +#: fpdb.pyw:755 msgid "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" -#: fpdb.pyw:756 +#: fpdb.pyw:758 msgid "Fatal Error - Config File Missing" msgstr "" -#: fpdb.pyw:758 +#: fpdb.pyw:760 msgid "Please copy the config file from the docs folder to:" msgstr "" -#: fpdb.pyw:766 +#: fpdb.pyw:768 msgid "and edit it according to the install documentation at http://fpdb.sourceforge.net" msgstr "" -#: fpdb.pyw:823 +#: fpdb.pyw:825 msgid "_Main" msgstr "" -#: fpdb.pyw:824 fpdb.pyw:852 +#: fpdb.pyw:826 fpdb.pyw:854 msgid "_Quit" msgstr "" -#: fpdb.pyw:825 +#: fpdb.pyw:827 msgid "L" msgstr "" -#: fpdb.pyw:825 +#: fpdb.pyw:827 msgid "_Load Profile (broken)" msgstr "" -#: fpdb.pyw:826 +#: fpdb.pyw:828 msgid "S" msgstr "" -#: fpdb.pyw:826 +#: fpdb.pyw:828 msgid "_Save Profile (todo)" msgstr "" -#: fpdb.pyw:827 +#: fpdb.pyw:829 msgid "F" msgstr "" -#: fpdb.pyw:827 +#: fpdb.pyw:829 msgid "Pre_ferences" msgstr "" -#: fpdb.pyw:828 +#: fpdb.pyw:830 msgid "_Import" msgstr "" -#: fpdb.pyw:829 +#: fpdb.pyw:831 msgid "_Set HandHistory Archive Directory" msgstr "" -#: fpdb.pyw:830 +#: fpdb.pyw:832 msgid "B" msgstr "" -#: fpdb.pyw:830 +#: fpdb.pyw:832 msgid "_Bulk Import" msgstr "" -#: fpdb.pyw:831 +#: fpdb.pyw:833 msgid "I" msgstr "" -#: fpdb.pyw:831 +#: fpdb.pyw:833 msgid "_Import through eMail/IMAP" msgstr "" -#: fpdb.pyw:832 +#: fpdb.pyw:834 msgid "_Viewers" msgstr "" -#: fpdb.pyw:833 +#: fpdb.pyw:835 msgid "A" msgstr "" -#: fpdb.pyw:833 +#: fpdb.pyw:835 msgid "_Auto Import and HUD" msgstr "" -#: fpdb.pyw:834 +#: fpdb.pyw:836 msgid "H" msgstr "" -#: fpdb.pyw:834 +#: fpdb.pyw:836 msgid "_HUD Configurator" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:837 msgid "G" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:837 msgid "_Graphs" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:838 msgid "P" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:838 msgid "Ring _Player Stats (tabulated view)" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:839 msgid "T" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:839 msgid "_Tourney Player Stats (tabulated view)" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:840 msgid "Tourney _Viewer" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:841 msgid "O" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:841 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "" -#: fpdb.pyw:840 fpdb.pyw:1057 +#: fpdb.pyw:842 fpdb.pyw:1059 msgid "Session Stats" msgstr "" -#: fpdb.pyw:841 +#: fpdb.pyw:843 msgid "_Database" msgstr "" -#: fpdb.pyw:842 +#: fpdb.pyw:844 msgid "_Maintain Databases" msgstr "" -#: fpdb.pyw:843 +#: fpdb.pyw:845 msgid "Create or Recreate _Tables" msgstr "" -#: fpdb.pyw:844 +#: fpdb.pyw:846 msgid "Rebuild HUD Cache" msgstr "" -#: fpdb.pyw:845 +#: fpdb.pyw:847 msgid "Rebuild DB Indexes" msgstr "" -#: fpdb.pyw:846 +#: fpdb.pyw:848 msgid "_Statistics" msgstr "" -#: fpdb.pyw:847 +#: fpdb.pyw:849 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "" -#: fpdb.pyw:848 +#: fpdb.pyw:850 msgid "_Help" msgstr "" -#: fpdb.pyw:849 +#: fpdb.pyw:851 msgid "_Log Messages" msgstr "" -#: fpdb.pyw:850 +#: fpdb.pyw:852 msgid "A_bout, License, Copying" msgstr "" -#: fpdb.pyw:868 +#: fpdb.pyw:870 msgid "" "There is an error in your config file\n" msgstr "" -#: fpdb.pyw:869 +#: fpdb.pyw:871 msgid "" "\n" "\n" "Error is: " msgstr "" -#: fpdb.pyw:870 +#: fpdb.pyw:872 msgid "CONFIG FILE ERROR" msgstr "" -#: fpdb.pyw:876 +#: fpdb.pyw:878 msgid "Config file" msgstr "" -#: fpdb.pyw:877 +#: fpdb.pyw:879 msgid "" "has been created at:\n" "%s.\n" msgstr "" -#: fpdb.pyw:878 +#: fpdb.pyw:880 msgid "Edit your screen_name and hand history path in the supported_sites " msgstr "" -#: fpdb.pyw:879 +#: fpdb.pyw:881 msgid "section of the Preferences window (Main menu) before trying to import hands." msgstr "" -#: fpdb.pyw:902 +#: fpdb.pyw:904 msgid "Connected to SQLite: %(database)s" msgstr "" -#: fpdb.pyw:906 +#: fpdb.pyw:908 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" -#: fpdb.pyw:907 +#: fpdb.pyw:909 msgid "Please check that the MySQL service has been started" msgstr "" -#: fpdb.pyw:911 +#: fpdb.pyw:913 msgid "Postgres client reports: Unable to connect - " msgstr "" -#: fpdb.pyw:912 +#: fpdb.pyw:914 msgid "Please check that the Postgres service has been started" msgstr "" -#: fpdb.pyw:936 +#: fpdb.pyw:938 msgid "Strong Warning - Invalid database version" msgstr "" -#: fpdb.pyw:938 +#: fpdb.pyw:940 msgid "An invalid DB version or missing tables have been detected." msgstr "" -#: fpdb.pyw:942 +#: fpdb.pyw:944 msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu." msgstr "" -#: fpdb.pyw:946 +#: fpdb.pyw:948 msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc." msgstr "" -#: fpdb.pyw:959 +#: fpdb.pyw:961 msgid "Status: Connected to %s database named %s on host %s" msgstr "" -#: fpdb.pyw:969 +#: fpdb.pyw:971 msgid "" "\n" "Global lock taken by" msgstr "" -#: fpdb.pyw:972 +#: fpdb.pyw:974 msgid "" "\n" "Failed to get global lock, it is currently held by" msgstr "" -#: fpdb.pyw:982 +#: fpdb.pyw:984 msgid "Quitting normally" msgstr "" -#: fpdb.pyw:1006 +#: fpdb.pyw:1008 msgid "" "Global lock released.\n" msgstr "" -#: fpdb.pyw:1013 +#: fpdb.pyw:1015 msgid "Auto Import" msgstr "" -#: fpdb.pyw:1020 +#: fpdb.pyw:1022 msgid "Bulk Import" msgstr "" -#: fpdb.pyw:1026 +#: fpdb.pyw:1028 msgid "eMail Import" msgstr "" -#: fpdb.pyw:1033 +#: fpdb.pyw:1035 msgid "Ring Player Stats" msgstr "" -#: fpdb.pyw:1039 +#: fpdb.pyw:1041 msgid "Tourney Player Stats" msgstr "" -#: fpdb.pyw:1045 +#: fpdb.pyw:1047 msgid "Tourney Viewer" msgstr "" -#: fpdb.pyw:1051 +#: fpdb.pyw:1053 msgid "Positional Stats" msgstr "" -#: fpdb.pyw:1061 +#: fpdb.pyw:1063 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n" @@ -2064,43 +2530,139 @@ msgid "" "You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory." msgstr "" -#: fpdb.pyw:1078 +#: fpdb.pyw:1080 msgid "Help" msgstr "" -#: fpdb.pyw:1085 +#: fpdb.pyw:1087 msgid "Graphs" msgstr "" -#: fpdb.pyw:1135 +#: fpdb.pyw:1137 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n" msgstr "" -#: fpdb.pyw:1164 +#: fpdb.pyw:1166 msgid "fpdb starting ..." msgstr "" -#: fpdb.pyw:1213 +#: fpdb.pyw:1215 msgid "FPDB WARNING" msgstr "" -#: fpdb.pyw:1232 +#: fpdb.pyw:1234 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" -#: fpdb.pyw:1240 +#: fpdb.pyw:1242 msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed." msgstr "" -#: fpdb.pyw:1245 +#: fpdb.pyw:1247 msgid "Select HH Output Directory" msgstr "" +#: fpdb_import.py:60 +msgid "Import database module: MySQLdb not found" +msgstr "" + +#: fpdb_import.py:67 +msgid "Import database module: psycopg2 not found" +msgstr "" + +#: fpdb_import.py:178 +msgid "Database ID for %s not found" +msgstr "" + +#: fpdb_import.py:180 +msgid "[ERROR] More than 1 Database ID found for %s - Multiple currencies not implemented yet" +msgstr "" + +#: fpdb_import.py:216 +msgid "Attempted to add non-directory: '%s' as an import directory" +msgstr "" + +#: fpdb_import.py:226 +msgid "Started at %s -- %d files to import. indexes: %s" +msgstr "" + +#: fpdb_import.py:235 +msgid "No need to drop indexes." +msgstr "" + +#: fpdb_import.py:254 +msgid "writers finished already" +msgstr "" + +#: fpdb_import.py:257 +msgid "waiting for writers to finish ..." +msgstr "" + +#: fpdb_import.py:267 +msgid " ... writers finished" +msgstr "" + +#: fpdb_import.py:273 +msgid "No need to rebuild indexes." +msgstr "" + +#: fpdb_import.py:277 +msgid "No need to rebuild hudcache." +msgstr "" + +#: fpdb_import.py:302 +msgid "sending finish msg qlen =" +msgstr "" + +#: fpdb_import.py:428 fpdb_import.py:430 +msgid "Converting " +msgstr "" + +#: fpdb_import.py:466 +msgid "Hand processed but empty" +msgstr "" + +#: fpdb_import.py:479 +msgid "fpdb_import: sending hand to hud" +msgstr "" + +#: fpdb_import.py:482 +msgid "Failed to send hand to HUD: %s" +msgstr "" + +#: fpdb_import.py:493 +msgid "Unknown filter filter_name:'%s' in filter:'%s'" +msgstr "" + +#: fpdb_import.py:504 +msgid "Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge.net so we can fix the problem." +msgstr "" + +#: fpdb_import.py:505 +msgid "Filename:" +msgstr "" + +#: fpdb_import.py:506 +msgid "Here is the first line of the hand so you can identify it. Please mention that the error was a ValueError:" +msgstr "" + +#: fpdb_import.py:508 +msgid "Hand logged to hand-errors.txt" +msgstr "" + +#: fpdb_import.py:516 +msgid "CLI for fpdb_import is now available as CliFpdb.py" +msgstr "" + +#: interlocks.py:49 +msgid "lock already held by:" +msgstr "" + #: test_Database.py:50 msgid "DEBUG: Testing variance function" msgstr "" @@ -2109,13 +2671,13 @@ msgstr "" msgid "DEBUG: result: %s expecting: 0.666666 (result-expecting ~= 0.0): %s" msgstr "" -#: windows_make_bats.py:31 +#: windows_make_bats.py:39 msgid "" "\n" "This script is only for windows\n" msgstr "" -#: windows_make_bats.py:58 +#: windows_make_bats.py:66 msgid "" "\n" "no gtk directories found in your path - install gtk or edit the path manually\n" From e8d0c425667bb3f21559eb895f0ddf7556413376 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 16 Aug 2010 23:49:50 +0200 Subject: [PATCH 148/641] gettext import for guiprefs --- pyfpdb/GuiPrefs.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pyfpdb/GuiPrefs.py b/pyfpdb/GuiPrefs.py index 6d908ec6..6c8c6210 100755 --- a/pyfpdb/GuiPrefs.py +++ b/pyfpdb/GuiPrefs.py @@ -23,8 +23,19 @@ pygtk.require('2.0') import gtk import gobject -import Configuration +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string +import Configuration rewrite = { 'general' : 'General', 'supported_databases' : 'Databases' , 'import' : 'Import', 'hud_ui' : 'HUD' From 7c0358dc2064019c851598a4e93b729222d17476 Mon Sep 17 00:00:00 2001 From: gimick Date: Mon, 16 Aug 2010 23:00:08 +0100 Subject: [PATCH 149/641] Test: resave test HH's as UTF-8/unix --- ...- No Limit Hold'em - dateformat change.txt | Bin 2378 -> 1149 bytes ... singlehand session postBB out of turn.txt | Bin 2654 -> 1274 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/FT20100721 Flash - $0.02-$0.05 - No Limit Hold'em - dateformat change.txt b/pyfpdb/regression-test-files/cash/FTP/Flop/FT20100721 Flash - $0.02-$0.05 - No Limit Hold'em - dateformat change.txt index 4386557b340ccd6fff8289cd09f9086596179615..ca8234076269cf103462750e6cdd30d74e395f06 100644 GIT binary patch literal 1149 zcmZ`&(Qeu>6n)QET&a~>5X+K~K*$>#Wz|%=4T7d=+JlJ=v2bD(JL@X#<98Dq2vd29 za*vPgbI(1V*Fr$bg@&(k&noyt3I;bp5XNyFjE7#7KuR`(!CVlP!#lY3TrYUvd?T!$ zB|PzhYj~7`-mwB9KT7-|Jf!&hozVe&uEi?^{s02c_nZ|Y8vFz*SrS31KN(Hn{x)#O zUeBxr2`Ejfz2_kwx}k6JAqw%T;U7f(z@3aO947Eu>0Iy~shXw8;;4HueO{+C1Y6Zp*)mt}*UPmWPYE*RU(qC=h}aHwQWgAXq`X^)BBF^aL59i-9< zbk0B(1fAUoUQ&=-W1C~|KC?D_cgcyI6gO{btx*qGz)Mh#WjCSI@Au*H%hLmVoGxc8 zz|xs9f|Jwo*woK&3PSqJvHfguD9Sl?Vaf~n2I>yO?y(~Mm~1vZk40U1sPQGB->g9UDT$bX}E*o|-(GSk&2G9g7!U8ru(2 zdP*+ku5|Q zBGNAOwkw*UYG$w!1C|nsu~vgBY7joatc)ToR1zN>L918{H}VKI;_XYqR6=_*;UD3kj$`&Rw20qr0TKv zRGt+l117MXYV9ndRqK6~zCxxc>XrbJw{ipBSjw1~L-*d3pW_wuScwc#5i4>ogFjZ3 zJSGp%5p#lbDrfjxGLU@m5ooeDg8p=+rH=Ar=)8}RM~-EYB5Fn>U|a?FHoy{kf3Ax> z{{-IeL-HLec!KH;aJILU+fz;3kF;zmaetRD>L)^;Kh&~cuQTY7;hEmmYvbQ9uZAzT ztap5=YM=PGL-bD36aGyT`^gL9*~2E9V?~*H8RR!XeK|EOLS#^``L42*qc)sqmLIGf z@ov)aqw`tl-<^VQW5+;ic?1uP%x7R5Ulw|Ejo(WbMZLatp3cEB_J^&f&*2+o8xbk` zfvl!?cA%ZUk(&nv{|1;DM_A%k5$w*Qi|gE30Pp!&$HmeAcnwJlUIP9DO{*j`NRQkt)wh zM(|ZmQBS{C&2K_|{?Q9Nj}w+Xm^!7pjwOPm3|K6g<+x!Pv CU}abU diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/FT20100804 Venice (6 max) - $0.01-$0.02 - singlehand session postBB out of turn.txt b/pyfpdb/regression-test-files/cash/FTP/Flop/FT20100804 Venice (6 max) - $0.01-$0.02 - singlehand session postBB out of turn.txt index 90c07bb881b431d0d637eed209ba55e12118ba6c..91f29aeba55ea3728899319c6e52e80d7922d593 100644 GIT binary patch literal 1274 zcmaJ>U2obz5PbKqSSghPs13feO~7xofhHCCs4``izyKfZguvumI& z4@fszW@l!1Gq2JVLY_)^5eHVl$0%cPMd_FlLMSB@AHrypGI(V8Jl{y!5zfC8{!(=Yj78FYQRwgdNs)yo9bo+j-r$$$UTEH zi!hQ+%JT%oR@*dXPN!_ccc(?vGJZ5w9gO8c$zqWwC8TUCK?;asY1ll&rYl2iy{V)W zIq(vAjz7eduBbH_4B-BGF@q1&;BE={wC-4h14A;?as4@gPw`j7>%taiP_|v-J&O-z zqt3h<-!Ymk&rF&U)p)*meo-x9?IbWQf$p0w1WuTo)29a;hIwjhMrBtOF&fRE&~eG7 z_IpVgJiN|=Q%*oeSl_mJ{*#uB+P&y{bJPI4 zc2>DE!V;BgaySC5a=;7h#| zp^#CE8zoifNdF6h=)lZm-;1b7{69lPi=YgiU7~V8ygW+1qy2M_HB-QlI#-?WB)^t*q&=vBwfStN$^W+FMY`vc$sA EZ{}@-#{d8T literal 2654 zcmbtW+iuf95S?cv{$VAMnj$W-leA6W3Qf2OT1ZnQRPo?AO{qwlDo(jbd^>Q?thZTv z?SzXgCu{G{?3p=dXZ-7DUv6ZI%g9hJ@xR3At<2@KoXY~^=aR?_V)zw{3cgZ(YRC@W&EVymY-98Y_kC%~W89HExgE#(+!6LR@*4It+(h#N zZ>BPqE%=+|t0L)O-!>5JW7Ngl9`IZ5v3hR8cN1v&+m^d>M^0d$sK-b#U*vnFh}B3V zN3x6c+oko~#mF^KB=Q|z7T9;aMJup~Jc}-HmG@`|7OmW(gIq<3p=`kn6j8Nvi#S-j z6Rhocc=m2%_G2XCYvevd&N7Ub@<|!ZlufG{a()T6$C#hX1ive8nRDMC-`S%_(wP~OI-ABfSvxC z1G}qL7|#m5KhTRBK8B`ySo2H{WFUu7qseEv?hyDAprqa{!eX>%@=kO73b;Q8xXJqj zcz8;(V3tv(ik(Wg^F{CFS)VnkAXRKrjnw5j3icttWlt{tKB7NHU2!oRIg^$~bf8{i z;0xojdsB5Qz0ku3=jg<9e@sj6a zE{j?j$|)3bv>{i_V7oGF|C1Fzdw+&@ATLqzdqBL7Ta#lY>RqrIa{Vu;BlMQ492fa2 z$FzyDQ*h`Mf36y}8Y)&e?rqQssID9QUtz>5Xiu-dXD7f&UCv-tt!mDGRV8KW&sJU5 zB~}O5r`Q2)M{sBC1iE>Hi}mFLR@(Q>&roftJ6qrA$DRfo#Sc6WaK_p5-3+@kZJ)w6 zL40HFAmORC%o>l?^?lZHW3y#zsOv0!Ae^HDbKjMhy6)@OVSZU`;&tV*t~*zEHv0a1 z)OGzl>~@>{4-nZGFtaG-rMmx*v3d+OZmC+FavOyR%3l)IUkB`;tW>PN%Us<>^*uyp LoQ}ySdGqhzcU_2R From c49565fcb18b770817a82aec155dc70d547580ac Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Tue, 17 Aug 2010 07:56:00 +0300 Subject: [PATCH 150/641] Fix config file copying for debian package If there is no config file in ~/.fpdb/ copy it from the package's /usr/share path --- pyfpdb/Configuration.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 618d27da..ae578f57 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -84,6 +84,13 @@ def get_config(file_name, fallback = True): # print "config path 2=", config_path if os.path.exists(config_path): return (config_path,False) + # Copy from example (debian package) + try: + example_path = '/usr/share/python-fpdb/' + file_name + '.example' + shutil.copyfile(example_path, config_path) + return (config_path,False) + except IOError: + pass # No file found if not fallback: From f18cc00c0d1e7055eb34cdd2f9f8739903ce5b2f Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Tue, 17 Aug 2010 08:18:46 +0300 Subject: [PATCH 151/641] Move sample copying after fallback test Only try to copy the example HUD_config.xml after fallback has been tested against, and even then only on platform where the debian path can exist --- pyfpdb/Configuration.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index ae578f57..d1f0efec 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -84,18 +84,26 @@ def get_config(file_name, fallback = True): # print "config path 2=", config_path if os.path.exists(config_path): return (config_path,False) - # Copy from example (debian package) - try: - example_path = '/usr/share/python-fpdb/' + file_name + '.example' - shutil.copyfile(example_path, config_path) - return (config_path,False) - except IOError: - pass # No file found if not fallback: return (False,False) +# Example configuration for debian package + if os.name == 'posix': + # If we're on linux, try to copy example from the place + # debian package puts it; get_default_config_path() creates + # the config directory for us so there's no need to check it + # again + example_path = '/usr/share/python-fpdb/' + file_name + '.example' + try: + shutil.copyfile(example_path, config_path) + msg = 'Configuration file created: %s\n' % config_path + logging.info(msg) + return (config_path,False) + except IOError: + pass + # OK, fall back to the .example file, should be in the start dir if os.path.exists(file_name + ".example"): try: From f1b051a99a9952595faa7bf709184ed4c2b0acca Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Tue, 17 Aug 2010 08:25:23 +0300 Subject: [PATCH 152/641] Update changelog --- packaging/debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packaging/debian/changelog b/packaging/debian/changelog index 2bd7df9b..49211161 100644 --- a/packaging/debian/changelog +++ b/packaging/debian/changelog @@ -1,3 +1,9 @@ +free-poker-tools (0.20.904-2) unstable; urgency=low + + * On fpdb start, copy example HUD_config.xml in place if none is present + + -- Mika Bostrom Tue, 17 Aug 2010 08:23:31 +0300 + free-poker-tools (0.20.904-1) unstable; urgency=low * .904 snapshot release From bde9a4016339a3e85e0b0a9b4c991c9a8a5dad69 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 19:50:22 +0200 Subject: [PATCH 153/641] gettextify pyfpdb/Stats.py --- pyfpdb/Stats.py | 198 +++++++++++++++++++++--------------------------- 1 file changed, 85 insertions(+), 113 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index e38b5806..ffb1e47e 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -55,6 +55,18 @@ import pygtk import gtk import re +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + # FreePokerTools modules import Configuration import Database @@ -88,8 +100,8 @@ def do_stat(stat_dict, player = 24, stat = 'vpip'): result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': base, 'player': player}) except: pass # - log.info("exception getting stat "+base+" for player "+str(player)+str(sys.exc_info())) - log.debug("result = %s" % str(result) ) + log.info(_("exception getting stat %s for player %s %s") % (base, str(player), str(sys.exc_info()))) + log.debug(_("Stats.do_stat result = %s") % str(result) ) match = re_Percent.search(result[1]) try: @@ -98,7 +110,7 @@ def do_stat(stat_dict, player = 24, stat = 'vpip'): else: result = (result[0], "%.*f%%" % (places, 100*result[0]), result[2], result[3], result[4], result[5]) except: - log.info( "error: %s" % str(sys.exc_info())) + log.info(_("error: %s") % str(sys.exc_info())) raise return result @@ -117,8 +129,8 @@ def totalprofit(stat_dict, player): """ Total Profit.""" if stat_dict[player]['net'] != 0: stat = float(stat_dict[player]['net']) / 100 - return (stat, '$%.2f' % stat, 'tp=$%.2f' % stat, 'totalprofit=$%.2f' % stat, str(stat), 'Total Profit') - return ('0', '$0.00', 'tp=0', 'totalprofit=0', '0', 'Total Profit') + return (stat, '$%.2f' % stat, 'tp=$%.2f' % stat, 'totalprofit=$%.2f' % stat, str(stat), _('Total Profit')) + return ('0', '$0.00', 'tp=0', 'totalprofit=0', '0', _('Total Profit')) def playername(stat_dict, player): """ Player Name.""" @@ -139,14 +151,14 @@ def vpip(stat_dict, player): 'v=%3.1f' % (100*stat) + '%', 'vpip=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']), - 'Voluntarily Put In Pot Pre-Flop%' + _('Voluntarily Put In Pot Pre-Flop%') ) except: return (stat, '%3.1f' % (0) + '%', 'v=%3.1f' % (0) + '%', 'vpip=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Voluntarily Put In Pot Pre-Flop%' + _('Voluntarily Put In Pot Pre-Flop%') ) def pfr(stat_dict, player): @@ -159,7 +171,7 @@ def pfr(stat_dict, player): 'p=%3.1f' % (100*stat) + '%', 'pfr=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['pfr'], stat_dict[player]['n']), - 'Pre-Flop Raise %' + _('Pre-Flop Raise %') ) except: return (stat, @@ -167,7 +179,7 @@ def pfr(stat_dict, player): 'p=%3.1f' % (0) + '%', 'pfr=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Pre-Flop Raise %' + _('Pre-Flop Raise %') ) def wtsd(stat_dict, player): @@ -180,7 +192,7 @@ def wtsd(stat_dict, player): 'w=%3.1f' % (100*stat) + '%', 'wtsd=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']), - '% went to showdown' + _('% went to showdown') ) except: return (stat, @@ -188,7 +200,7 @@ def wtsd(stat_dict, player): 'w=%3.1f' % (0) + '%', 'wtsd=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% went to showdown' + _('% went to showdown') ) def wmsd(stat_dict, player): @@ -201,7 +213,7 @@ def wmsd(stat_dict, player): 'w=%3.1f' % (100*stat) + '%', 'wmsd=%3.1f' % (100*stat) + '%', '(%5.1f/%d)' % (float(stat_dict[player]['wmsd']), stat_dict[player]['sd']), - '% won money at showdown' + _('% won money at showdown') ) except: return (stat, @@ -209,7 +221,7 @@ def wmsd(stat_dict, player): 'w=%3.1f' % (0) + '%', 'wmsd=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% won money at showdown' + _('% won money at showdown') ) def profit100(stat_dict, player): @@ -222,16 +234,16 @@ def profit100(stat_dict, player): 'p=%.0f' % (100.0*stat), 'p/100=%.0f' % (100.0*stat), '%d/%d' % (stat_dict[player]['net'], stat_dict[player]['n']), - 'profit/100hands' + _('profit/100hands') ) except: - print "exception calcing p/100: 100 * %d / %d" % (stat_dict[player]['net'], stat_dict[player]['n']) + print _("exception calcing p/100: 100 * %d / %d") % (stat_dict[player]['net'], stat_dict[player]['n']) return (stat, '%.0f' % (0.0), 'p=%.0f' % (0.0), 'p/100=%.0f' % (0.0), '(%d/%d)' % (0, 0), - 'profit/100hands' + _('profit/100hands') ) def bbper100(stat_dict, player): @@ -244,7 +256,7 @@ def bbper100(stat_dict, player): 'bb100=%5.3f' % (stat), 'bb100=%5.3f' % (stat), '(%d,%d)' % (100*stat_dict[player]['net'],stat_dict[player]['bigblind']), - 'big blinds/100 hands' + _('big blinds/100 hands') ) except: log.info("exception calcing bb/100: "+str(stat_dict[player])) @@ -253,7 +265,7 @@ def bbper100(stat_dict, player): 'bb100=%.0f' % (0), 'bb100=%.0f' % (0), '(%f)' % (0), - 'big blinds/100 hands' + _('big blinds/100 hands') ) def BBper100(stat_dict, player): @@ -266,16 +278,16 @@ def BBper100(stat_dict, player): 'BB100=%5.3f' % (stat), 'BB100=%5.3f' % (stat), '(%d,%d)' % (100*stat_dict[player]['net'],2*stat_dict[player]['bigblind']), - 'Big Bets/100 hands' + _('Big Bets/100 hands') ) except: - log.info("exception calcing BB/100: "+str(stat_dict[player])) + log.info(_("exception calcing BB/100: ")+str(stat_dict[player])) return (stat, '%.0f' % (0.0), 'BB100=%.0f' % (0.0), 'BB100=%.0f' % (0.0), '(%f)' % (0.0), - 'Big Bets/100 hands' + _('Big Bets/100 hands') ) def saw_f(stat_dict, player): @@ -289,7 +301,7 @@ def saw_f(stat_dict, player): 'sf=%3.1f' % (100*stat) + '%', 'saw_f=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']), - 'Flop Seen %' + _('Flop Seen %') ) except: stat = 0.0 @@ -300,7 +312,7 @@ def saw_f(stat_dict, player): 'sf=%3.1f' % (stat) + '%', 'saw_f=%3.1f' % (stat) + '%', '(%d/%d)' % (num, den), - 'Flop Seen %' + _('Flop Seen %') ) def n(stat_dict, player): @@ -323,7 +335,7 @@ def n(stat_dict, player): 'n=%d' % (stat_dict[player]['n']), 'n=%d' % (stat_dict[player]['n']), '(%d)' % (stat_dict[player]['n']), - 'number hands seen' + _('number hands seen') ) except: return (0, @@ -331,7 +343,7 @@ def n(stat_dict, player): 'n=%d' % (0), 'n=%d' % (0), '(%d)' % (0), - 'number hands seen' + _('number hands seen') ) def fold_f(stat_dict, player): @@ -344,7 +356,7 @@ def fold_f(stat_dict, player): 'ff=%3.1f' % (100*stat) + '%', 'fold_f=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']), - 'folded flop/4th' + _('folded flop/4th') ) except: return (stat, @@ -352,7 +364,7 @@ def fold_f(stat_dict, player): 'ff=%3.1f' % (0) + '%', 'fold_f=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'folded flop/4th' + _('folded flop/4th') ) def steal(stat_dict, player): @@ -365,7 +377,7 @@ def steal(stat_dict, player): 'st=%3.1f' % (100*stat) + '%', 'steal=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']), - '% steal attempted' + _('% steal attempted') ) except: return (stat, 'NA', 'st=NA', 'steal=NA', '(0/0)', '% steal attempted') @@ -380,15 +392,14 @@ def f_SB_steal(stat_dict, player): 'fSB=%3.1f' % (100*stat) + '%', 'fSB_s=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['sbnotdef'], stat_dict[player]['sbstolen']), - '% folded SB to steal' - ) + _('% folded SB to steal')) except: return (stat, 'NA', 'fSB=NA', 'fSB_s=NA', '(0/0)', - '% folded SB to steal') + _('% folded SB to steal')) def f_BB_steal(stat_dict, player): """ Folded BB to steal.""" @@ -400,15 +411,14 @@ def f_BB_steal(stat_dict, player): 'fBB=%3.1f' % (100*stat) + '%', 'fBB_s=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']), - '% folded BB to steal' - ) + _('% folded BB to steal')) except: return (stat, 'NA', 'fBB=NA', 'fBB_s=NA', '(0/0)', - '% folded BB to steal') + _('% folded BB to steal')) def f_steal(stat_dict, player): """ Folded blind to steal.""" @@ -423,15 +433,14 @@ def f_steal(stat_dict, player): 'fB=%3.1f' % (100*stat) + '%', 'fB_s=%3.1f' % (100*stat) + '%', '(%d/%d)' % (folded_blind, blind_stolen), - '% folded blind to steal' - ) + _('% folded blind to steal')) except: return (stat, 'NA', 'fB=NA', 'fB_s=NA', '(0/0)', - '% folded blind to steal') + _('% folded blind to steal')) def three_B(stat_dict, player): """ Three bet preflop/3rd.""" @@ -443,16 +452,14 @@ def three_B(stat_dict, player): '3B=%3.1f' % (100*stat) + '%', '3B_pf=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), - '% 3/4 Bet preflop/3rd' - ) + _('% 3/4 Bet preflop/3rd')) except: return (stat, '%3.1f' % (0) + '%', '3B=%3.1f' % (0) + '%', '3B_pf=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% 3/4 Bet preflop/3rd' - ) + _('% 3/4 Bet preflop/3rd')) def WMsF(stat_dict, player): """ Won $ when saw flop/4th.""" @@ -464,16 +471,14 @@ def WMsF(stat_dict, player): 'wf=%3.1f' % (100*stat) + '%', 'w_w_f=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']), - '% won$/saw flop/4th' - ) + _('% won$/saw flop/4th')) except: return (stat, '%3.1f' % (0) + '%', 'wf=%3.1f' % (0) + '%', 'w_w_f=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% won$/saw flop/4th' - ) + _('% won$/saw flop/4th')) def a_freq1(stat_dict, player): """ Flop/4th aggression frequency.""" @@ -485,16 +490,14 @@ def a_freq1(stat_dict, player): 'a1=%3.1f' % (100*stat) + '%', 'a_fq_1=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['aggr_1'], stat_dict[player]['saw_f']), - 'Aggression Freq flop/4th' - ) + _('Aggression Freq flop/4th')) except: return (stat, '%3.1f' % (0) + '%', 'a1=%3.1f' % (0) + '%', 'a_fq_1=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Aggression Freq flop/4th' - ) + _('Aggression Freq flop/4th')) def a_freq2(stat_dict, player): """ Turn/5th aggression frequency.""" @@ -506,16 +509,14 @@ def a_freq2(stat_dict, player): 'a2=%3.1f' % (100*stat) + '%', 'a_fq_2=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']), - 'Aggression Freq turn/5th' - ) + _('Aggression Freq turn/5th')) except: return (stat, '%3.1f' % (0) + '%', 'a2=%3.1f' % (0) + '%', 'a_fq_2=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Aggression Freq turn/5th' - ) + _('Aggression Freq turn/5th')) def a_freq3(stat_dict, player): """ River/6th aggression frequency.""" @@ -527,16 +528,14 @@ def a_freq3(stat_dict, player): 'a3=%3.1f' % (100*stat) + '%', 'a_fq_3=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['aggr_3'], stat_dict[player]['saw_3']), - 'Aggression Freq river/6th' - ) + _('Aggression Freq river/6th')) except: return (stat, '%3.1f' % (0) + '%', 'a3=%3.1f' % (0) + '%', 'a_fq_3=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Aggression Freq river/6th' - ) + _('Aggression Freq river/6th')) def a_freq4(stat_dict, player): """ 7th street aggression frequency.""" @@ -548,16 +547,14 @@ def a_freq4(stat_dict, player): 'a4=%3.1f' % (100*stat) + '%', 'a_fq_4=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']), - 'Aggression Freq 7th' - ) + _('Aggression Freq 7th')) except: return (stat, '%3.1f' % (0) + '%', 'a4=%3.1f' % (0) + '%', 'a_fq_4=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Aggression Freq 7th' - ) + _('Aggression Freq 7th')) def a_freq_123(stat_dict, player): """ Post-Flop aggression frequency.""" @@ -576,16 +573,14 @@ def a_freq_123(stat_dict, player): + stat_dict[player]['saw_2'] + stat_dict[player]['saw_3'] ), - 'Post-Flop Aggression Freq' - ) + _('Post-Flop Aggression Freq')) except: return (stat, '%2.0f' % (0) + '%', 'a3=%2.0f' % (0) + '%', 'a_fq_3=%2.0f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Post-Flop Aggression Freq' - ) + _('Post-Flop Aggression Freq')) def agg_freq(stat_dict, player): """ Post-Flop aggression frequency.""" @@ -606,16 +601,14 @@ def agg_freq(stat_dict, player): 'afr=%3.1f' % (100*stat) + '%', 'agg_fr=%3.1f' % (100*stat) + '%', '(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)), - 'Aggression Freq' - ) + _('Aggression Freq')) except: return (stat, '%2.1f' % (0) + '%', 'af=%3.1f' % (0) + '%', 'agg_f=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - 'Aggression Freq' - ) + _('Aggression Freq')) def agg_fact(stat_dict, player): """ Post-Flop aggression frequency.""" @@ -634,17 +627,14 @@ def agg_fact(stat_dict, player): 'afa=%2.2f' % (stat) , 'agg_fa=%2.2f' % (stat) , '(%d/%d)' % (bet_raise, post_call), - 'Aggression Factor' - ) + _('Aggression Factor')) except: return (stat, '%2.2f' % (0) , 'afa=%2.2f' % (0) , 'agg_fa=%2.2f' % (0), '(%d/%d)' % (0, 0), - 'Aggression Factor' - ) - + _('Aggression Factor')) def cbet(stat_dict, player): @@ -661,16 +651,14 @@ def cbet(stat_dict, player): 'cbet=%3.1f' % (100*stat) + '%', 'cbet=%3.1f' % (100*stat) + '%', '(%d/%d)' % (cbets, oppt), - '% continuation bet ' - ) + _('% continuation bet ')) except: return (stat, '%3.1f' % (0) + '%', 'cbet=%3.1f' % (0) + '%', 'cbet=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% continuation bet ' - ) + _('% continuation bet ')) def cb1(stat_dict, player): """ Flop continuation bet.""" @@ -682,16 +670,14 @@ def cb1(stat_dict, player): 'cb1=%3.1f' % (100*stat) + '%', 'cb_1=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['cb_1'], stat_dict[player]['cb_opp_1']), - '% continuation bet flop/4th' - ) + _('% continuation bet flop/4th')) except: return (stat, '%3.1f' % (0) + '%', 'cb1=%3.1f' % (0) + '%', 'cb_1=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% continuation bet flop/4th' - ) + _('% continuation bet flop/4th')) def cb2(stat_dict, player): """ Turn continuation bet.""" @@ -703,16 +689,14 @@ def cb2(stat_dict, player): 'cb2=%3.1f' % (100*stat) + '%', 'cb_2=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['cb_2'], stat_dict[player]['cb_opp_2']), - '% continuation bet turn/5th' - ) + _('% continuation bet turn/5th')) except: return (stat, '%3.1f' % (0) + '%', 'cb2=%3.1f' % (0) + '%', 'cb_2=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% continuation bet turn/5th' - ) + _('% continuation bet turn/5th')) def cb3(stat_dict, player): """ River continuation bet.""" @@ -724,16 +708,14 @@ def cb3(stat_dict, player): 'cb3=%3.1f' % (100*stat) + '%', 'cb_3=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['cb_3'], stat_dict[player]['cb_opp_3']), - '% continuation bet river/6th' - ) + _('% continuation bet river/6th')) except: return (stat, '%3.1f' % (0) + '%', 'cb3=%3.1f' % (0) + '%', 'cb_3=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% continuation bet river/6th' - ) + _('% continuation bet river/6th')) def cb4(stat_dict, player): """ 7th street continuation bet.""" @@ -745,16 +727,14 @@ def cb4(stat_dict, player): 'cb4=%3.1f' % (100*stat) + '%', 'cb_4=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['cb_4'], stat_dict[player]['cb_opp_4']), - '% continuation bet 7th' - ) + _('% continuation bet 7th')) except: return (stat, '%3.1f' % (0) + '%', 'cb4=%3.1f' % (0) + '%', 'cb_4=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% continuation bet 7th' - ) + _('% continuation bet 7th')) def ffreq1(stat_dict, player): """ Flop/4th fold frequency.""" @@ -766,16 +746,14 @@ def ffreq1(stat_dict, player): 'ff1=%3.1f' % (100*stat) + '%', 'ff_1=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']), - '% fold frequency flop/4th' - ) + _('% fold frequency flop/4th')) except: return (stat, 'NA', 'ff1=NA', 'ff_1=NA', '(0/0)', - '% fold frequency flop/4th' - ) + _('% fold frequency flop/4th')) def ffreq2(stat_dict, player): """ Turn/5th fold frequency.""" @@ -787,16 +765,14 @@ def ffreq2(stat_dict, player): 'ff2=%3.1f' % (100*stat) + '%', 'ff_2=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']), - '% fold frequency turn/5th' - ) + _('% fold frequency turn/5th')) except: return (stat, '%3.1f' % (0) + '%', 'ff2=%3.1f' % (0) + '%', 'ff_2=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% fold frequency turn/5th' - ) + _('% fold frequency turn/5th')) def ffreq3(stat_dict, player): """ River/6th fold frequency.""" @@ -808,16 +784,14 @@ def ffreq3(stat_dict, player): 'ff3=%3.1f' % (100*stat) + '%', 'ff_3=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']), - '% fold frequency river/6th' - ) + _('% fold frequency river/6th')) except: return (stat, '%3.1f' % (0) + '%', 'ff3=%3.1f' % (0) + '%', 'ff_3=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% fold frequency river/6th' - ) + _('% fold frequency river/6th')) def ffreq4(stat_dict, player): """ 7th fold frequency.""" @@ -829,16 +803,14 @@ def ffreq4(stat_dict, player): 'ff4=%3.1f' % (100*stat) + '%', 'ff_4=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']), - '% fold frequency 7th' - ) + _('% fold frequency 7th')) except: return (stat, '%3.1f' % (0) + '%', 'ff4=%3.1f' % (0) + '%', 'ff_4=%3.1f' % (0) + '%', '(%d/%d)' % (0, 0), - '% fold frequency 7th' - ) + _('% fold frequency 7th')) if __name__== "__main__": statlist = dir() @@ -858,7 +830,7 @@ if __name__== "__main__": stat_dict = db_connection.get_stats_from_hand(h, "ring") for player in stat_dict.keys(): - print "Example stats, player =", player, "hand =", h, ":" + print (_("Example stats, player = %s hand = %s:") % (player, h)) for attr in statlist: print " ", do_stat(stat_dict, player=player, stat=attr) break @@ -891,8 +863,8 @@ if __name__== "__main__": #print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq4') #print "\n" - print "\n\nLegal stats:" - print "(add _0 to name to display with 0 decimal places, _1 to display with 1, etc)\n" + print _("\n\nLegal stats:") + print _("(add _0 to name to display with 0 decimal places, _1 to display with 1, etc)\n") for attr in statlist: print "%-14s %s" % (attr, eval("%s.__doc__" % (attr))) # print " " % (attr) From f24011a58ed004bc421674e4c6410c3559c5687e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 19:53:08 +0200 Subject: [PATCH 154/641] re-revert "Revert "gettext-ify Hud.py" as it breaks HUD -> err32, broken pipe" This reverts commit 270657aeb098ee1274a32f9206cd38763f35025b. --- pyfpdb/Hud.py | 152 +++++++++++++++++++++++++------------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index a92682e7..0c608b52 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -134,153 +134,153 @@ class Hud: # A popup menu for the main window menu = gtk.Menu() - killitem = gtk.MenuItem('Kill This HUD') + killitem = gtk.MenuItem(_('Kill This HUD')) menu.append(killitem) if self.parent is not None: killitem.connect("activate", self.parent.kill_hud, self.table_name) - saveitem = gtk.MenuItem('Save HUD Layout') + saveitem = gtk.MenuItem(_('Save HUD Layout')) menu.append(saveitem) saveitem.connect("activate", self.save_layout) - repositem = gtk.MenuItem('Reposition StatWindows') + repositem = gtk.MenuItem(_('Reposition StatWindows')) menu.append(repositem) repositem.connect("activate", self.reposition_windows) - aggitem = gtk.MenuItem('Show Player Stats') + aggitem = gtk.MenuItem(_('Show Player Stats')) menu.append(aggitem) self.aggMenu = gtk.Menu() aggitem.set_submenu(self.aggMenu) # set agg_bb_mult to 1 to stop aggregation - item = gtk.CheckMenuItem('For This Blind Level Only') + item = gtk.CheckMenuItem(_('For This Blind Level Only')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',1)) setattr(self, 'h_aggBBmultItem1', item) - # - item = gtk.MenuItem('For Multiple Blind Levels:') + + item = gtk.MenuItem(_('For Multiple Blind Levels:')) self.aggMenu.append(item) - # - item = gtk.CheckMenuItem(' 0.5 to 2.0 x Current Blinds') + + item = gtk.CheckMenuItem(_(' 0.5 to 2.0 x Current Blinds')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',2)) setattr(self, 'h_aggBBmultItem2', item) - # - item = gtk.CheckMenuItem(' 0.33 to 3.0 x Current Blinds') + + item = gtk.CheckMenuItem(_(' 0.33 to 3.0 x Current Blinds')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',3)) setattr(self, 'h_aggBBmultItem3', item) - # - item = gtk.CheckMenuItem(' 0.1 to 10 x Current Blinds') + + item = gtk.CheckMenuItem(_(' 0.1 to 10 x Current Blinds')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',10)) setattr(self, 'h_aggBBmultItem10', item) - # - item = gtk.CheckMenuItem(' All Levels') + + item = gtk.CheckMenuItem(_(' All Levels')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('P',10000)) setattr(self, 'h_aggBBmultItem10000', item) - # - item = gtk.MenuItem('For #Seats:') + + item = gtk.MenuItem('For #Seats:')) self.aggMenu.append(item) - # - item = gtk.CheckMenuItem(' Any Number') + + item = gtk.CheckMenuItem(_(' Any Number')) self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('P','A')) setattr(self, 'h_seatsStyleOptionA', item) - # - item = gtk.CheckMenuItem(' Custom') + + item = gtk.CheckMenuItem(_(' Custom')) self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('P','C')) setattr(self, 'h_seatsStyleOptionC', item) - # - item = gtk.CheckMenuItem(' Exact') + + item = gtk.CheckMenuItem(_(' Exact')) self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('P','E')) setattr(self, 'h_seatsStyleOptionE', item) - # - item = gtk.MenuItem('Since:') + + item = gtk.MenuItem(_('Since:')) self.aggMenu.append(item) - # - item = gtk.CheckMenuItem(' All Time') + + item = gtk.CheckMenuItem(_(' All Time')) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('P','A')) setattr(self, 'h_hudStyleOptionA', item) - # - item = gtk.CheckMenuItem(' Session') + + item = gtk.CheckMenuItem(_(' Session')) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('P','S')) setattr(self, 'h_hudStyleOptionS', item) - # - item = gtk.CheckMenuItem(' %s Days' % (self.hud_params['h_hud_days'])) + + item = gtk.CheckMenuItem(_(' %s Days') % (self.hud_params['h_hud_days'])) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('P','T')) setattr(self, 'h_hudStyleOptionT', item) - aggitem = gtk.MenuItem('Show Opponent Stats') + aggitem = gtk.MenuItem(_('Show Opponent Stats')) menu.append(aggitem) self.aggMenu = gtk.Menu() aggitem.set_submenu(self.aggMenu) # set agg_bb_mult to 1 to stop aggregation - item = gtk.CheckMenuItem('For This Blind Level Only') + item = gtk.CheckMenuItem(_('For This Blind Level Only')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',1)) setattr(self, 'aggBBmultItem1', item) - # - item = gtk.MenuItem('For Multiple Blind Levels:') + + item = gtk.MenuItem(_('For Multiple Blind Levels:')) self.aggMenu.append(item) - # - item = gtk.CheckMenuItem(' 0.5 to 2.0 x Current Blinds') + + item = gtk.CheckMenuItem(_(' 0.5 to 2.0 x Current Blinds')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',2)) setattr(self, 'aggBBmultItem2', item) - # - item = gtk.CheckMenuItem(' 0.33 to 3.0 x Current Blinds') + + item = gtk.CheckMenuItem(_(' 0.33 to 3.0 x Current Blinds')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',3)) setattr(self, 'aggBBmultItem3', item) - # - item = gtk.CheckMenuItem(' 0.1 to 10 x Current Blinds') + + item = gtk.CheckMenuItem(_(' 0.1 to 10 x Current Blinds')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',10)) setattr(self, 'aggBBmultItem10', item) - # - item = gtk.CheckMenuItem(' All Levels') + + item = gtk.CheckMenuItem(_(' All Levels')) self.aggMenu.append(item) item.connect("activate", self.set_aggregation, ('O',10000)) setattr(self, 'aggBBmultItem10000', item) - # - item = gtk.MenuItem('For #Seats:') + + item = gtk.MenuItem(_('For #Seats:')) self.aggMenu.append(item) - # - item = gtk.CheckMenuItem(' Any Number') + + item = gtk.CheckMenuItem(_(' Any Number')) self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('O','A')) setattr(self, 'seatsStyleOptionA', item) - # - item = gtk.CheckMenuItem(' Custom') + + item = gtk.CheckMenuItem(_(' Custom')) self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('O','C')) setattr(self, 'seatsStyleOptionC', item) - # - item = gtk.CheckMenuItem(' Exact') + + item = gtk.CheckMenuItem(_(' Exact')) self.aggMenu.append(item) item.connect("activate", self.set_seats_style, ('O','E')) setattr(self, 'seatsStyleOptionE', item) - # - item = gtk.MenuItem('Since:') + + item = gtk.MenuItem(_('Since:')) self.aggMenu.append(item) - # - item = gtk.CheckMenuItem(' All Time') + + item = gtk.CheckMenuItem(_(' All Time')) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('O','A')) setattr(self, 'hudStyleOptionA', item) - # - item = gtk.CheckMenuItem(' Session') + + item = gtk.CheckMenuItem(_(' Session')) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('O','S')) setattr(self, 'hudStyleOptionS', item) - # - item = gtk.CheckMenuItem(' %s Days' % (self.hud_params['h_hud_days'])) + + item = gtk.CheckMenuItem(_(' %s Days') % (self.hud_params['h_hud_days'])) self.aggMenu.append(item) item.connect("activate", self.set_hud_style, ('O','T')) setattr(self, 'hudStyleOptionT', item) @@ -296,7 +296,7 @@ class Hud: getattr(self, 'h_aggBBmultItem10').set_active(True) elif self.hud_params['h_agg_bb_mult'] > 9000: getattr(self, 'h_aggBBmultItem10000').set_active(True) - # + if self.hud_params['agg_bb_mult'] == 1: getattr(self, 'aggBBmultItem1').set_active(True) elif self.hud_params['agg_bb_mult'] == 2: @@ -307,28 +307,28 @@ class Hud: getattr(self, 'aggBBmultItem10').set_active(True) elif self.hud_params['agg_bb_mult'] > 9000: getattr(self, 'aggBBmultItem10000').set_active(True) - # + if self.hud_params['h_seats_style'] == 'A': getattr(self, 'h_seatsStyleOptionA').set_active(True) elif self.hud_params['h_seats_style'] == 'C': getattr(self, 'h_seatsStyleOptionC').set_active(True) elif self.hud_params['h_seats_style'] == 'E': getattr(self, 'h_seatsStyleOptionE').set_active(True) - # + if self.hud_params['seats_style'] == 'A': getattr(self, 'seatsStyleOptionA').set_active(True) elif self.hud_params['seats_style'] == 'C': getattr(self, 'seatsStyleOptionC').set_active(True) elif self.hud_params['seats_style'] == 'E': getattr(self, 'seatsStyleOptionE').set_active(True) - # + if self.hud_params['h_hud_style'] == 'A': getattr(self, 'h_hudStyleOptionA').set_active(True) elif self.hud_params['h_hud_style'] == 'S': getattr(self, 'h_hudStyleOptionS').set_active(True) elif self.hud_params['h_hud_style'] == 'T': getattr(self, 'h_hudStyleOptionT').set_active(True) - # + if self.hud_params['hud_style'] == 'A': getattr(self, 'hudStyleOptionA').set_active(True) elif self.hud_params['hud_style'] == 'S': @@ -338,11 +338,11 @@ class Hud: eventbox.connect_object("button-press-event", self.on_button_press, menu) - debugitem = gtk.MenuItem('Debug StatWindows') + debugitem = gtk.MenuItem(_('Debug StatWindows')) menu.append(debugitem) debugitem.connect("activate", self.debug_stat_windows) - item5 = gtk.MenuItem('Set max seats') + item5 = gtk.MenuItem(_('Set max seats')) menu.append(item5) maxSeatsMenu = gtk.Menu() item5.set_submenu(maxSeatsMenu) @@ -525,7 +525,7 @@ class Hud: # ask each aux to save its layout back to the config object [aux.save_layout() for aux in self.aux_windows] # save the config object back to the file - print "Updating config file" + print _("Updating config file") self.config.save() def adj_seats(self, hand, config): @@ -534,7 +534,7 @@ class Hud: adj = range(0, self.max + 1) # default seat adjustments = no adjustment # does the user have a fav_seat? if self.max not in config.supported_sites[self.table.site].layout: - sys.stderr.write("No layout found for %d-max games for site %s\n" % (self.max, self.table.site) ) + sys.stderr.write(_("No layout found for %d-max games for site %s\n") % (self.max, self.table.site) ) return adj if self.table.site != None and int(config.supported_sites[self.table.site].layout[self.max].fav_seat) > 0: try: @@ -548,15 +548,15 @@ class Hud: if adj[j] > self.max: adj[j] = adj[j] - self.max except Exception, inst: - sys.stderr.write("exception in adj!!!\n\n") - sys.stderr.write("error is %s" % inst) # __str__ allows args to printed directly + sys.stderr.write(_("exception in Hud.adj_seats\n\n")) + sys.stderr.write(_("error is %s") % inst) # __str__ allows args to printed directly return adj def get_actual_seat(self, name): for key in self.stat_dict: if self.stat_dict[key]['screen_name'] == name: return self.stat_dict[key]['seat'] - sys.stderr.write("Error finding actual seat.\n") + sys.stderr.write(_("Error finding actual seat.\n")) def create(self, hand, config, stat_dict, cards): # update this hud, to the stats and players as of "hand" @@ -572,7 +572,7 @@ class Hud: self.stat_dict = stat_dict self.cards = cards - sys.stderr.write("------------------------------------------------------------\nCreating hud from hand %s\n" % hand) + sys.stderr.write(_("------------------------------------------------------------\nCreating hud from hand %s\n") % hand) adj = self.adj_seats(hand, config) loc = self.config.get_locations(self.table.site, self.max) if loc is None and self.max != 10: @@ -621,8 +621,8 @@ class Hud: try: statd = self.stat_dict[s] except KeyError: - log.error("KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric") - log.error("(btw, the key was ", s, " and statd is...", statd) + log.error(_("KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric")) + log.error(_("(btw, the key was %s and statd is %s") % (s, statd)) continue try: self.stat_windows[statd['seat']].player_id = statd['player_id'] @@ -929,7 +929,7 @@ class Popup_window: if __name__== "__main__": main_window = gtk.Window() main_window.connect("destroy", destroy) - label = gtk.Label('Fake main window, blah blah, blah\nblah, blah') + label = gtk.Label(_('Fake main window, blah blah, blah\nblah, blah')) main_window.add(label) main_window.show_all() @@ -937,7 +937,7 @@ if __name__== "__main__": #tables = Tables.discover(c) t = Tables.discover_table_by_name(c, "Corona") if t is None: - print "Table not found." + print _("Table not found.") db = Database.Database(c, 'fpdb', 'holdem') stat_dict = db.get_stats_from_hand(1) From 5b042b1820287a5754d8c59f2c0325f264219367 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 20:05:12 +0200 Subject: [PATCH 155/641] fix gettextification of Hud.py --- pyfpdb/Hud.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index 0c608b52..0fdf314f 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -42,6 +42,18 @@ if os.name == 'nt': import win32con import win32api +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + # FreePokerTools modules import Tables # needed for testing only import Configuration @@ -180,7 +192,7 @@ class Hud: item.connect("activate", self.set_aggregation, ('P',10000)) setattr(self, 'h_aggBBmultItem10000', item) - item = gtk.MenuItem('For #Seats:')) + item = gtk.MenuItem(_('For #Seats:')) self.aggMenu.append(item) item = gtk.CheckMenuItem(_(' Any Number')) From 1d66730158d255799b3d5a1e7eb44eb76e444a4f Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 20:13:56 +0200 Subject: [PATCH 156/641] update po files, add script for that --- pyfpdb/locale/fpdb-en_GB.po | 312 ++++- pyfpdb/locale/fpdb-hu_HU.po | 1981 ++++++++++++++++++++++-------- pyfpdb/locale/update-po-files.sh | 2 + 3 files changed, 1760 insertions(+), 535 deletions(-) create mode 100755 pyfpdb/locale/update-po-files.sh diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index c213d1dd..3a0103e8 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -5,12 +5,12 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-16 07:17+CEST\n" +"POT-Creation-Date: 2010-08-17 20:08+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: ENCODING\n" "Generated-By: pygettext.py 1.5\n" @@ -1014,19 +1014,19 @@ msgstr "" msgid "Positional Stats page displayed in %4.2f seconds" msgstr "" -#: GuiPrefs.py:70 +#: GuiPrefs.py:81 msgid "Setting" msgstr "" -#: GuiPrefs.py:76 +#: GuiPrefs.py:87 msgid "Value (double-click to change)" msgstr "" -#: GuiPrefs.py:176 +#: GuiPrefs.py:187 msgid "Test Preferences Dialog" msgstr "" -#: GuiPrefs.py:181 fpdb.pyw:296 +#: GuiPrefs.py:192 fpdb.pyw:296 msgid "Preferences" msgstr "" @@ -1649,6 +1649,138 @@ msgid "" " on %s." msgstr "" +#: Hud.py:149 +msgid "Kill This HUD" +msgstr "" + +#: Hud.py:154 +msgid "Save HUD Layout" +msgstr "" + +#: Hud.py:158 +msgid "Reposition StatWindows" +msgstr "" + +#: Hud.py:162 +msgid "Show Player Stats" +msgstr "" + +#: Hud.py:167 Hud.py:236 +msgid "For This Blind Level Only" +msgstr "" + +#: Hud.py:172 Hud.py:241 +msgid "For Multiple Blind Levels:" +msgstr "" + +#: Hud.py:175 Hud.py:244 +msgid " 0.5 to 2.0 x Current Blinds" +msgstr "" + +#: Hud.py:180 Hud.py:249 +msgid " 0.33 to 3.0 x Current Blinds" +msgstr "" + +#: Hud.py:185 Hud.py:254 +msgid " 0.1 to 10 x Current Blinds" +msgstr "" + +#: Hud.py:190 Hud.py:259 +msgid " All Levels" +msgstr "" + +#: Hud.py:195 Hud.py:264 +msgid "For #Seats:" +msgstr "" + +#: Hud.py:198 Hud.py:267 +msgid " Any Number" +msgstr "" + +#: Hud.py:203 Hud.py:272 +msgid " Custom" +msgstr "" + +#: Hud.py:208 Hud.py:277 +msgid " Exact" +msgstr "" + +#: Hud.py:213 Hud.py:282 +msgid "Since:" +msgstr "" + +#: Hud.py:216 Hud.py:285 +msgid " All Time" +msgstr "" + +#: Hud.py:221 Hud.py:290 +msgid " Session" +msgstr "" + +#: Hud.py:226 Hud.py:295 +msgid " %s Days" +msgstr "" + +#: Hud.py:231 +msgid "Show Opponent Stats" +msgstr "" + +#: Hud.py:353 +msgid "Debug StatWindows" +msgstr "" + +#: Hud.py:357 +msgid "Set max seats" +msgstr "" + +#: Hud.py:540 +msgid "Updating config file" +msgstr "" + +#: Hud.py:549 +msgid "" +"No layout found for %d-max games for site %s\n" +msgstr "" + +#: Hud.py:563 +msgid "" +"exception in Hud.adj_seats\n" +"\n" +msgstr "" + +#: Hud.py:564 +msgid "error is %s" +msgstr "" + +#: Hud.py:571 +msgid "" +"Error finding actual seat.\n" +msgstr "" + +#: Hud.py:587 +msgid "" +"------------------------------------------------------------\n" +"Creating hud from hand %s\n" +msgstr "" + +#: Hud.py:636 +msgid "KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric" +msgstr "" + +#: Hud.py:637 +msgid "(btw, the key was %s and statd is %s" +msgstr "" + +#: Hud.py:944 +msgid "" +"Fake main window, blah blah, blah\n" +"blah, blah" +msgstr "" + +#: Hud.py:952 +msgid "Table not found." +msgstr "" + #: ImapFetcher.py:54 msgid "response to logging in:" msgstr "" @@ -1765,6 +1897,174 @@ msgstr "" msgid "reading antes" msgstr "" +#: Stats.py:103 +msgid "exception getting stat %s for player %s %s" +msgstr "" + +#: Stats.py:104 +msgid "Stats.do_stat result = %s" +msgstr "" + +#: Stats.py:113 +msgid "error: %s" +msgstr "" + +#: Stats.py:132 Stats.py:133 +msgid "Total Profit" +msgstr "" + +#: Stats.py:154 Stats.py:161 +msgid "Voluntarily Put In Pot Pre-Flop%" +msgstr "" + +#: Stats.py:174 Stats.py:182 +msgid "Pre-Flop Raise %" +msgstr "" + +#: Stats.py:195 Stats.py:203 +msgid "% went to showdown" +msgstr "" + +#: Stats.py:216 Stats.py:224 +msgid "% won money at showdown" +msgstr "" + +#: Stats.py:237 Stats.py:246 +msgid "profit/100hands" +msgstr "" + +#: Stats.py:240 +msgid "exception calcing p/100: 100 * %d / %d" +msgstr "" + +#: Stats.py:259 Stats.py:268 +msgid "big blinds/100 hands" +msgstr "" + +#: Stats.py:281 Stats.py:290 +msgid "Big Bets/100 hands" +msgstr "" + +#: Stats.py:284 +msgid "exception calcing BB/100: " +msgstr "" + +#: Stats.py:304 Stats.py:315 +msgid "Flop Seen %" +msgstr "" + +#: Stats.py:338 Stats.py:346 +msgid "number hands seen" +msgstr "" + +#: Stats.py:359 Stats.py:367 +msgid "folded flop/4th" +msgstr "" + +#: Stats.py:380 +msgid "% steal attempted" +msgstr "" + +#: Stats.py:395 Stats.py:402 +msgid "% folded SB to steal" +msgstr "" + +#: Stats.py:414 Stats.py:421 +msgid "% folded BB to steal" +msgstr "" + +#: Stats.py:436 Stats.py:443 +msgid "% folded blind to steal" +msgstr "" + +#: Stats.py:455 Stats.py:462 +msgid "% 3/4 Bet preflop/3rd" +msgstr "" + +#: Stats.py:474 Stats.py:481 +msgid "% won$/saw flop/4th" +msgstr "" + +#: Stats.py:493 Stats.py:500 +msgid "Aggression Freq flop/4th" +msgstr "" + +#: Stats.py:512 Stats.py:519 +msgid "Aggression Freq turn/5th" +msgstr "" + +#: Stats.py:531 Stats.py:538 +msgid "Aggression Freq river/6th" +msgstr "" + +#: Stats.py:550 Stats.py:557 +msgid "Aggression Freq 7th" +msgstr "" + +#: Stats.py:576 Stats.py:583 +msgid "Post-Flop Aggression Freq" +msgstr "" + +#: Stats.py:604 Stats.py:611 +msgid "Aggression Freq" +msgstr "" + +#: Stats.py:630 Stats.py:637 +msgid "Aggression Factor" +msgstr "" + +#: Stats.py:654 Stats.py:661 +msgid "% continuation bet " +msgstr "" + +#: Stats.py:673 Stats.py:680 +msgid "% continuation bet flop/4th" +msgstr "" + +#: Stats.py:692 Stats.py:699 +msgid "% continuation bet turn/5th" +msgstr "" + +#: Stats.py:711 Stats.py:718 +msgid "% continuation bet river/6th" +msgstr "" + +#: Stats.py:730 Stats.py:737 +msgid "% continuation bet 7th" +msgstr "" + +#: Stats.py:749 Stats.py:756 +msgid "% fold frequency flop/4th" +msgstr "" + +#: Stats.py:768 Stats.py:775 +msgid "% fold frequency turn/5th" +msgstr "" + +#: Stats.py:787 Stats.py:794 +msgid "% fold frequency river/6th" +msgstr "" + +#: Stats.py:806 Stats.py:813 +msgid "% fold frequency 7th" +msgstr "" + +#: Stats.py:833 +msgid "Example stats, player = %s hand = %s:" +msgstr "" + +#: Stats.py:866 +msgid "" +"\n" +"\n" +"Legal stats:" +msgstr "" + +#: Stats.py:867 +msgid "" +"(add _0 to name to display with 0 decimal places, _1 to display with 1, etc)\n" +msgstr "" + #: Tables.py:234 msgid "Found unknown table = %s" msgstr "" diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index c39a5987..ea1a3f23 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,53 +5,54 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.904\n" -"POT-Creation-Date: 2010-08-15 20:33+CEST\n" +"POT-Creation-Date: 2010-08-17 20:08+CEST\n" "PO-Revision-Date: 2010-08-16 00:47+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: UTF-8\n" "Generated-By: pygettext.py 1.5\n" "Plural-Forms: nplurals=2; plural=n !=1;\n" -#: Anonymise.py:47 +#: Anonymise.py:55 msgid "Could not find file %s" msgstr "%s fájl nem találhatópd" -#: Anonymise.py:53 +#: Anonymise.py:61 msgid "Output being written to" msgstr "Az eredmény ide került kiírásra" -#: BetfairToFpdb.py:75 +#: BetfairToFpdb.py:83 msgid "GameInfo regex did not match" msgstr "GameInfo regex nem illeszkedik" -#: BetfairToFpdb.py:106 +#: BetfairToFpdb.py:114 msgid "Didn't match re_HandInfo" msgstr "re_HandInfo nem illeszkedik" -#: BetfairToFpdb.py:162 +#: BetfairToFpdb.py:170 msgid "No bringin found" msgstr "Beülő nem található" -#: BetfairToFpdb.py:198 PokerStarsToFpdb.py:423 +#: BetfairToFpdb.py:206 PokerStarsToFpdb.py:440 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "DEBUG: nem ismert readAction: '%s' '%s'" -#: BetfairToFpdb.py:221 PokerStarsToFpdb.py:450 +#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 msgid "parse input hand history" msgstr "leosztástörténet feldolgozása" -#: BetfairToFpdb.py:222 PokerStarsToFpdb.py:451 +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 msgid "output translation to" msgstr "feldolgozás eredményének helye" -#: BetfairToFpdb.py:223 PokerStarsToFpdb.py:452 +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 msgid "follow (tail -f) the input" msgstr "kövesse a kimenetet (tail -f)" -#: Card.py:159 +#: Card.py:167 msgid "fpdb card encoding(same as pokersource)" msgstr "fpdb kártyakódolás (ugyanaz, mint amit a pokersource használ)" @@ -63,7 +64,7 @@ msgstr "Nem sikerült konvertálni: \"%s\"\n" msgid "Could not encode: \"%s\"\n" msgstr "Nem sikerült kódolni: \"%s\"\n" -#: Configuration.py:98 +#: Configuration.py:110 msgid "" "No %s found\n" " in %s\n" @@ -73,31 +74,31 @@ msgstr "" " itt: %s\n" " vagy itt: %s\n" -#: Configuration.py:99 +#: Configuration.py:111 msgid "Config file has been created at %s.\n" msgstr "Konfigurációs fájl létrehozva itt: %s.\n" -#: Configuration.py:104 Configuration.py:105 +#: Configuration.py:116 Configuration.py:117 msgid "Error copying .example file, cannot fall back. Exiting.\n" msgstr "Hiba a .example fájl másolása közben, nem tudom folytatni. Kilépés.\n" -#: Configuration.py:109 Configuration.py:110 +#: Configuration.py:121 Configuration.py:122 msgid "No %s found, cannot fall back. Exiting.\n" msgstr "%s nem található, nem tudom folytatni. Kilépés.\n" -#: Configuration.py:140 +#: Configuration.py:152 msgid "Default logger initialised for " msgstr "Alapértelmezett naplózó előkészítve ehhez: " -#: Configuration.py:141 +#: Configuration.py:153 msgid "Default logger intialised for " msgstr "Alapértelmezett naplózó előkészítve ehhez: " -#: Configuration.py:152 +#: Configuration.py:164 Database.py:431 Database.py:432 msgid "Creating directory: '%s'" msgstr "Könyvtár létrehozása: '%s'" -#: Configuration.py:178 +#: Configuration.py:190 msgid "" "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're " "not on a Mac, please report this problem." @@ -105,27 +106,27 @@ msgstr "" "US-ASCII az alapértelmezett karakterkódolás, CP1252 használata ehelyett.Ha " "nem Mac-et használsz, akkor kérlek jelentsd ezt a problémát." -#: Configuration.py:261 +#: Configuration.py:273 msgid "Loading site" msgstr "Terem betöltése" -#: Configuration.py:499 +#: Configuration.py:511 msgid "config.general: adding %s = %s" msgstr "config.general: %s = %s hozzáadása" -#: Configuration.py:532 Configuration.py:533 +#: Configuration.py:544 Configuration.py:545 msgid "bad number in xalignment was ignored" msgstr "hibás érték az xalignment-ben - figyelmen kívül hagyás" -#: Configuration.py:586 Configuration.py:587 +#: Configuration.py:598 Configuration.py:599 msgid "Configuration file %s not found. Using defaults." msgstr "A %s konfigurációs fájl nem található. Alapértelmezések használata." -#: Configuration.py:603 +#: Configuration.py:615 msgid "Reading configuration file %s" msgstr "%s konfigurációs fájl használata" -#: Configuration.py:604 +#: Configuration.py:616 msgid "" "\n" "Reading configuration file %s\n" @@ -133,171 +134,486 @@ msgstr "" "\n" "%s konfigurációs fájl használata\n" -#: Configuration.py:609 +#: Configuration.py:621 msgid "Error parsing %s. See error log file." msgstr "Hiba a(z) %s olvasása közben. Nézz bele a naplófájlba." -#: Filters.py:51 +#: Database.py:74 +msgid "Not using sqlalchemy connection pool." +msgstr "" + +#: Database.py:81 +msgid "Not using numpy to define variance in sqlite." +msgstr "" + +#: Database.py:246 +msgid "Creating Database instance, sql = %s" +msgstr "" + +#: Database.py:382 +msgid "*** WARNING UNKNOWN MYSQL ERROR:" +msgstr "" + +#: Database.py:436 +#, fuzzy +msgid "Connecting to SQLite: %(database)s" +msgstr "Kapcsolódva a %(database)s SQLite adatbázishoz" + +#: Database.py:448 +msgid "Some database functions will not work without NumPy support" +msgstr "" + +#: Database.py:469 +msgid "outdated or too new database version (%s) - please recreate tables" +msgstr "" + +#: Database.py:475 Database.py:476 +#, fuzzy +msgid "Failed to read settings table - recreating tables" +msgstr "Erősítsd meg a táblák törlését és újra létrehozását" + +#: Database.py:480 Database.py:481 +msgid "Failed to read settings table - please recreate tables" +msgstr "" + +#: Database.py:499 +msgid "commit finished ok, i = " +msgstr "" + +#: Database.py:502 +msgid "commit %s failed: info=%s value=%s" +msgstr "" + +#: Database.py:506 +msgid "commit failed" +msgstr "" + +#: Database.py:675 Database.py:704 +#, fuzzy +msgid "*** Database Error: " +msgstr "***Hiba: " + +#: Database.py:701 +msgid "Database: date n hands ago = " +msgstr "" + +#: Database.py:858 +msgid "ERROR: query %s result does not have player_id as first column" +msgstr "" + +#: Database.py:900 +msgid "getLastInsertId(): problem fetching insert_id? ret=%d" +msgstr "" + +#: Database.py:912 +msgid "getLastInsertId(%s): problem fetching lastval? row=%d" +msgstr "" + +#: Database.py:919 +msgid "getLastInsertId(): unknown backend: %d" +msgstr "" + +#: Database.py:924 +msgid "*** Database get_last_insert_id error: " +msgstr "" + +#: Database.py:978 Database.py:1398 +msgid "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." +msgstr "" + +#: Database.py:982 Database.py:1402 +msgid "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." +msgstr "" + +#: Database.py:990 Database.py:1276 +msgid "dropping mysql index " +msgstr "" + +#: Database.py:996 Database.py:1281 Database.py:1289 Database.py:1296 +#, fuzzy +msgid " drop index failed: " +msgstr "Indexek eldobása" + +#: Database.py:1001 Database.py:1283 +msgid "dropping pg index " +msgstr "" + +#: Database.py:1014 +msgid "warning: drop index %s_%s_idx failed: %s, continuing ..." +msgstr "" + +#: Database.py:1018 +msgid "warning: index %s_%s_idx not dropped %s, continuing ..." +msgstr "" + +#: Database.py:1058 Database.py:1066 Database.py:1329 Database.py:1337 +msgid "creating foreign key " +msgstr "" + +#: Database.py:1064 Database.py:1085 Database.py:1335 +msgid " create foreign key failed: " +msgstr "" + +#: Database.py:1073 Database.py:1344 +msgid " create foreign key failed: " +msgstr "" + +#: Database.py:1080 +msgid "creating mysql index " +msgstr "" + +#: Database.py:1089 +#, fuzzy +msgid "creating pg index " +msgstr "Hello létrehozása" + +#: Database.py:1094 +msgid " create index failed: " +msgstr "" + +#: Database.py:1134 Database.py:1135 +#, fuzzy +msgid "Finished recreating tables" +msgstr "A felhasználó mégsem generálja újra a táblákat." + +#: Database.py:1172 +msgid "***Error creating tables: " +msgstr "" + +#: Database.py:1182 +msgid "*** Error unable to get databasecursor" +msgstr "" + +#: Database.py:1194 Database.py:1205 Database.py:1215 Database.py:1222 +#, fuzzy +msgid "***Error dropping tables: " +msgstr "Hibanaplózási szint:" + +#: Database.py:1220 +msgid "*** Error in committing table drop" +msgstr "" + +#: Database.py:1234 Database.py:1235 +msgid "Creating mysql index %s %s" +msgstr "" + +#: Database.py:1240 Database.py:1249 +msgid " create index failed: " +msgstr "" + +#: Database.py:1243 Database.py:1244 +msgid "Creating pgsql index %s %s" +msgstr "" + +#: Database.py:1251 Database.py:1252 +msgid "Creating sqlite index %s %s" +msgstr "" + +#: Database.py:1257 +msgid "Create index failed: " +msgstr "" + +#: Database.py:1259 +msgid "Unknown database: MySQL, Postgres and SQLite supported" +msgstr "" + +#: Database.py:1264 +#, fuzzy +msgid "Error creating indexes: " +msgstr "Hiba a(z) '%s' konvertálása közben" + +#: Database.py:1291 +msgid "Dropping sqlite index " +msgstr "" + +#: Database.py:1298 +msgid "" +"Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" +msgstr "" + +#: Database.py:1312 Database.py:1352 +msgid " set_isolation_level failed: " +msgstr "" + +#: Database.py:1346 Database.py:1405 +msgid "Only MySQL and Postgres supported so far" +msgstr "" + +#: Database.py:1376 +msgid "dropping mysql foreign key" +msgstr "" + +#: Database.py:1380 +msgid " drop failed: " +msgstr "" + +#: Database.py:1383 +msgid "dropping pg foreign key" +msgstr "" + +#: Database.py:1395 +msgid "dropped pg foreign key %s_%s_fkey, continuing ..." +msgstr "" + +#: Database.py:1496 +msgid "Rebuild hudcache took %.1f seconds" +msgstr "" + +#: Database.py:1499 Database.py:1532 +#, fuzzy +msgid "Error rebuilding hudcache:" +msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." + +#: Database.py:1544 Database.py:1550 +#, fuzzy +msgid "Error during analyze:" +msgstr "Hibanaplózási szint:" + +#: Database.py:1554 +msgid "Analyze took %.1f seconds" +msgstr "" + +#: Database.py:1564 Database.py:1570 +#, fuzzy +msgid "Error during vacuum:" +msgstr "Hibanaplózási szint:" + +#: Database.py:1574 +msgid "Vacuum took %.1f seconds" +msgstr "" + +#: Database.py:1586 +msgid "Error during lock_for_insert:" +msgstr "" + +#: Database.py:1959 +msgid "queue empty too long - writer stopping ..." +msgstr "" + +#: Database.py:1962 +msgid "writer stopping, error reading queue: " +msgstr "" + +#: Database.py:1987 +msgid "deadlock detected - trying again ..." +msgstr "" + +#: Database.py:1992 +msgid "too many deadlocks - failed to store hand " +msgstr "" + +#: Database.py:1996 +#, fuzzy +msgid "***Error storing hand: " +msgstr "***Hiba: " + +#: Database.py:2006 +#, fuzzy +msgid "db writer finished: stored %d hands (%d fails) in %.1f seconds" +msgstr "%d leosztás beolvasva (%d sikertelen) %.3f mp alatt" + +#: Database.py:2016 +msgid "***Error sending finish: " +msgstr "" + +#: Database.py:2096 +msgid "invalid source in Database.createOrUpdateTourney" +msgstr "" + +#: Database.py:2109 +msgid "invalid source in Database.createOrUpdateTourneysPlayers" +msgstr "" + +#: Database.py:2235 +msgid "HandToWrite.init error: " +msgstr "" + +#: Database.py:2285 +msgid "HandToWrite.set_all error: " +msgstr "" + +#: Database.py:2316 +msgid "nutOmatic is id_player = %d" +msgstr "" + +#: Database.py:2324 +msgid "query plan: " +msgstr "" + +#: Database.py:2333 +msgid "cards =" +msgstr "" + +#: Database.py:2336 +msgid "get_stats took: %4.3f seconds" +msgstr "" + +#: Database.py:2338 Tables.py:448 +#, fuzzy +msgid "press enter to continue" +msgstr " - nyomj ENTER-t a folytatáshoz\n" + +#: Filters.py:62 msgid "All" msgstr "Mind" -#: Filters.py:51 +#: Filters.py:62 msgid "None" msgstr "Egyik sem" -#: Filters.py:51 +#: Filters.py:62 msgid "Show _Limits" msgstr "_Limitek" -#: Filters.py:52 -msgid "And:" -msgstr "Max:" - -#: Filters.py:52 -msgid "Between:" -msgstr "Min:" - -#: Filters.py:52 +#: Filters.py:63 msgid "Show Number of _Players" msgstr "_Játékosok száma" -#: Filters.py:53 +#: Filters.py:63 TourneyFilters.py:60 +msgid "And:" +msgstr "Max:" + +#: Filters.py:63 TourneyFilters.py:60 +msgid "Between:" +msgstr "Min:" + +#: Filters.py:64 msgid "Games:" msgstr "Játékok:" -#: Filters.py:53 +#: Filters.py:64 TourneyFilters.py:59 msgid "Hero:" msgstr "Játékos:" -#: Filters.py:53 +#: Filters.py:64 TourneyFilters.py:59 msgid "Sites:" msgstr "Termek:" -#: Filters.py:54 +#: Filters.py:65 msgid "Limits:" msgstr "Limitek:" -#: Filters.py:54 +#: Filters.py:65 TourneyFilters.py:59 msgid "Number of Players:" msgstr "Játékosok száma:" -#: Filters.py:55 +#: Filters.py:66 msgid "Grouping:" msgstr "Csoportosítás:" -#: Filters.py:55 +#: Filters.py:66 msgid "Show Position Stats:" msgstr "Pozíció" -#: Filters.py:56 +#: Filters.py:67 TourneyFilters.py:60 msgid "Date:" msgstr "Dátum:" -#: Filters.py:57 +#: Filters.py:68 msgid "All Players" msgstr "Minden játékos" -#: Filters.py:58 +#: Filters.py:69 msgid "Ring" msgstr "Készpénzes játékok" -#: Filters.py:58 +#: Filters.py:69 msgid "Tourney" msgstr "Versenyek" -#: Filters.py:92 +#: Filters.py:103 TourneyFilters.py:116 msgid "Either 0 or more than one site matched (%s) - EEK" msgstr "Vagy egynél több, vagy egy terem sem illeszkedik (%s) - EEK" -#: Filters.py:302 +#: Filters.py:313 msgid "%s was toggled %s" msgstr "%s %s lett kapcsolva" -#: Filters.py:302 +#: Filters.py:313 msgid "OFF" msgstr "KI" -#: Filters.py:302 +#: Filters.py:313 msgid "ON" msgstr "BE" -#: Filters.py:383 +#: Filters.py:394 msgid "self.sites[%s] set to %s" msgstr "self.sites[%s] beállítva erre: %s" -#: Filters.py:389 +#: Filters.py:400 msgid "self.games[%s] set to %s" msgstr "self.games[%s] beállítva erre: %s" -#: Filters.py:395 +#: Filters.py:406 msgid "self.limit[%s] set to %s" msgstr "self.limit[%s] beállítva erre: %s" -#: Filters.py:532 +#: Filters.py:543 msgid "self.seats[%s] set to %s" msgstr "self.seats[%s] beállítva erre: %s" -#: Filters.py:538 +#: Filters.py:549 msgid "self.groups[%s] set to %s" msgstr "self.groups[%s] beállítva erre: %s" -#: Filters.py:571 +#: Filters.py:582 msgid "Min # Hands:" msgstr "Minimum ennyi leosztással:" -#: Filters.py:637 +#: Filters.py:648 msgid "INFO: No tourney types returned from database" msgstr "INFO: nem található versenytípus az adatbázisban" -#: Filters.py:638 +#: Filters.py:649 msgid "No tourney types returned from database" msgstr "Nem található versenytípus az adatbázisban" -#: Filters.py:664 Filters.py:753 +#: Filters.py:675 Filters.py:764 msgid "INFO: No games returned from database" msgstr "INFO: nem található játék az adatbázisban" -#: Filters.py:665 Filters.py:754 +#: Filters.py:676 Filters.py:765 msgid "No games returned from database" msgstr "Nem található játék az adatbázisban" -#: Filters.py:902 +#: Filters.py:913 msgid " Clear Dates " msgstr "Dátumok törlése" -#: Filters.py:929 fpdb.pyw:719 +#: Filters.py:940 fpdb.pyw:721 msgid "Pick a date" msgstr "Válassz egy dátumot" -#: Filters.py:935 fpdb.pyw:725 +#: Filters.py:946 fpdb.pyw:727 msgid "Done" msgstr "Kész" -#: GuiAutoImport.py:73 +#: GuiAutoImport.py:85 msgid "Time between imports in seconds:" msgstr "Importálások közti idő (mp):" -#: GuiAutoImport.py:104 GuiAutoImport.py:172 GuiAutoImport.py:249 +#: GuiAutoImport.py:116 GuiAutoImport.py:184 GuiAutoImport.py:261 msgid " Start _Autoimport " msgstr " _AutoImport indítása " -#: GuiAutoImport.py:123 +#: GuiAutoImport.py:135 msgid "AutoImport Ready." msgstr "AutoImport kész." -#: GuiAutoImport.py:136 +#: GuiAutoImport.py:148 msgid "Please choose the path that you want to auto import" msgstr "Válaszd ki a könyvtárat az AutoImporthoz" -#: GuiAutoImport.py:159 +#: GuiAutoImport.py:171 msgid " _Auto Import Running " msgstr " _AutoImport fut " -#: GuiAutoImport.py:170 +#: GuiAutoImport.py:182 msgid " Stop _Autoimport " msgstr " _AutoImport leállítása " -#: GuiAutoImport.py:195 +#: GuiAutoImport.py:207 msgid "" "\n" "Global lock taken ... Auto Import Started.\n" @@ -305,15 +621,15 @@ msgstr "" "\n" "Globális zárolás OK ... AutoImport elindítva.\n" -#: GuiAutoImport.py:197 +#: GuiAutoImport.py:209 msgid " _Stop Autoimport " msgstr " _AutoImport leállítása " -#: GuiAutoImport.py:213 +#: GuiAutoImport.py:225 msgid "opening pipe to HUD" msgstr "cső nyitása a HUD-hoz" -#: GuiAutoImport.py:225 +#: GuiAutoImport.py:237 msgid "" "\n" "*** GuiAutoImport Error opening pipe: " @@ -321,7 +637,7 @@ msgstr "" "\n" "*** GuiAutoImport Hiba a cső nyitásakor: " -#: GuiAutoImport.py:237 +#: GuiAutoImport.py:249 msgid "" "\n" "auto-import aborted - global lock not available" @@ -329,7 +645,7 @@ msgstr "" "\n" "AutoImport megszakítva - nem elérhető a globális zárolás" -#: GuiAutoImport.py:242 +#: GuiAutoImport.py:254 msgid "" "\n" "Stopping autoimport - global lock released." @@ -337,7 +653,7 @@ msgstr "" "\n" "AutoImport leállítása - globális zárolás feloldva." -#: GuiAutoImport.py:244 +#: GuiAutoImport.py:256 msgid "" "\n" " * Stop Autoimport: HUD already terminated" @@ -345,17 +661,17 @@ msgstr "" "\n" " * AutoImport megállítása: A HUD már nem fut" -#: GuiAutoImport.py:271 +#: GuiAutoImport.py:283 msgid "Browse..." msgstr "Kiválaszt..." -#: GuiAutoImport.py:314 GuiBulkImport.py:346 +#: GuiAutoImport.py:326 GuiBulkImport.py:354 msgid "How often to print a one-line status report (0 (default) means never)" msgstr "" "Egysoros státuszriportok megjelenítési gyakorisága (az alapértelmezett 0 " "szerint soha)" -#: GuiBulkImport.py:59 +#: GuiBulkImport.py:67 msgid "" "\n" "Global lock taken ..." @@ -363,11 +679,11 @@ msgstr "" "\n" "Globális zárolás OK..." -#: GuiBulkImport.py:60 +#: GuiBulkImport.py:68 msgid "Importing..." msgstr "Importálás..." -#: GuiBulkImport.py:109 +#: GuiBulkImport.py:117 msgid "" "GuiBulkImport.load done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: " "%d in %s seconds - %.0f/sec" @@ -375,97 +691,97 @@ msgstr "" "GuiBulkImport.load kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d " "\tHibák: %d %s másodperc alatt - %.0f/mp" -#: GuiBulkImport.py:123 +#: GuiBulkImport.py:131 msgid "Import Complete" msgstr "Importálás kész" -#: GuiBulkImport.py:131 +#: GuiBulkImport.py:139 msgid "bulk-import aborted - global lock not available" msgstr "tömeges importálás megszakítva - nem elérhető a globális zárolás" -#: GuiBulkImport.py:157 +#: GuiBulkImport.py:165 msgid "Print Start/Stop Info" msgstr "Start/Stop infó megjelenítése" -#: GuiBulkImport.py:164 +#: GuiBulkImport.py:172 msgid "Hands/status print:" msgstr "Leosztás/állapotjelzés:" -#: GuiBulkImport.py:181 +#: GuiBulkImport.py:189 msgid "Number of threads:" msgstr "Szálak száma:" -#: GuiBulkImport.py:201 +#: GuiBulkImport.py:209 msgid "Fail on error" msgstr "Hiba esetén megáll" -#: GuiBulkImport.py:206 +#: GuiBulkImport.py:214 msgid "Hands/file:" msgstr "Leosztás/fájl" -#: GuiBulkImport.py:221 +#: GuiBulkImport.py:229 msgid "Drop indexes:" msgstr "Indexek eldobása" -#: GuiBulkImport.py:230 GuiBulkImport.py:280 +#: GuiBulkImport.py:238 GuiBulkImport.py:288 msgid "auto" msgstr "automatikus" -#: GuiBulkImport.py:231 GuiBulkImport.py:281 GuiBulkImport.py:389 +#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:397 msgid "don't drop" msgstr "ne dobja el" -#: GuiBulkImport.py:232 GuiBulkImport.py:282 +#: GuiBulkImport.py:240 GuiBulkImport.py:290 msgid "drop" msgstr "eldobás" -#: GuiBulkImport.py:238 +#: GuiBulkImport.py:246 msgid "HUD Test mode" msgstr "HUD teszt mód" -#: GuiBulkImport.py:243 +#: GuiBulkImport.py:251 msgid "Site filter:" msgstr "Teremszűrő:" -#: GuiBulkImport.py:271 +#: GuiBulkImport.py:279 msgid "Drop HudCache:" msgstr "HUD gyorstár eldobása:" -#: GuiBulkImport.py:289 +#: GuiBulkImport.py:297 msgid "Import" msgstr "Importálás" -#: GuiBulkImport.py:291 +#: GuiBulkImport.py:299 msgid "Import clicked" msgstr "Importálásra kattintva" -#: GuiBulkImport.py:309 +#: GuiBulkImport.py:317 msgid "Waiting..." msgstr "Várakozás..." -#: GuiBulkImport.py:338 +#: GuiBulkImport.py:346 msgid "Input file in quiet mode" msgstr "Fájl feldolgozása csendes módban" -#: GuiBulkImport.py:340 +#: GuiBulkImport.py:348 msgid "don't start gui; deprecated (just give a filename with -f)." msgstr "ne indítsa el a GUI-t; elévült (használd helyette a -f kapcsolót)." -#: GuiBulkImport.py:342 +#: GuiBulkImport.py:350 msgid "Conversion filter (*Full Tilt Poker, PokerStars, Everleaf, Absolute)" msgstr "Konverziós szűrő (*Full Tilt Poker, PokerStars, Everleaf, Absolute)" -#: GuiBulkImport.py:344 +#: GuiBulkImport.py:352 msgid "If this option is passed it quits when it encounters any error" msgstr "" "Ha ez az opció ki van választva, akkor az fpdb kilép, ha bármilyen hibát " "észlel." -#: GuiBulkImport.py:348 +#: GuiBulkImport.py:356 msgid "Print some useful one liners" msgstr "Megjelenít néhány hasznos egysoros információt." -#: GuiBulkImport.py:350 +#: GuiBulkImport.py:358 msgid "" "Do the required conversion for Stars Archive format (ie. as provided by " "support" @@ -473,104 +789,104 @@ msgstr "" "A kiválasztott konverzió elvégzése Stars Archívum formátumra (ahogy az " "ügyfélszolgálattól jön" -#: GuiBulkImport.py:355 +#: GuiBulkImport.py:363 msgid "USAGE:" msgstr "HASZNÁLAT:" -#: GuiBulkImport.py:356 +#: GuiBulkImport.py:364 msgid "PokerStars converter: ./GuiBulkImport.py -c PokerStars -f filename" msgstr "PokerStars átalakító: ./GuiBulkImport.py -c PokerStars -f fájlnév" -#: GuiBulkImport.py:357 +#: GuiBulkImport.py:365 msgid "" "Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" msgstr "" "Full Tilt átalakító: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f fájlnév" -#: GuiBulkImport.py:358 +#: GuiBulkImport.py:366 msgid "Everleaf converter: ./GuiBulkImport.py -c Everleaf -f filename" msgstr "Everleaf átalakító: ./GuiBulkImport.py -c Everleaf -f fájlnév" -#: GuiBulkImport.py:359 +#: GuiBulkImport.py:367 msgid "Absolute converter: ./GuiBulkImport.py -c Absolute -f filename" msgstr "Absolute átalakító: ./GuiBulkImport.py -c Absolute -f fájlnév" -#: GuiBulkImport.py:360 +#: GuiBulkImport.py:368 msgid "PartyPoker converter: ./GuiBulkImport.py -c PartyPoker -f filename" msgstr "PartyPoker átalakító: ./GuiBulkImport.py -c PartyPoker -f fájlnév" -#: GuiBulkImport.py:376 +#: GuiBulkImport.py:384 msgid "-q is deprecated. Just use \"-f filename\" instead" msgstr "A -q már elévült. Használd helyette a \"-f fájlnév\" formát." -#: GuiBulkImport.py:398 +#: GuiBulkImport.py:406 msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" -"s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " +"%s másodperc alatt - %.0f/mp" -#: GuiDatabase.py:98 GuiLogView.py:88 +#: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" msgstr "Frissítés" -#: GuiDatabase.py:103 +#: GuiDatabase.py:111 msgid "Type" msgstr "Típus" -#: GuiDatabase.py:104 +#: GuiDatabase.py:112 msgid "Name" msgstr "Név" -#: GuiDatabase.py:105 +#: GuiDatabase.py:113 msgid "Description" msgstr "Leírás" -#: GuiDatabase.py:106 GuiImapFetcher.py:111 +#: GuiDatabase.py:114 GuiImapFetcher.py:123 msgid "Username" msgstr "Felhasználónév" -#: GuiDatabase.py:107 GuiImapFetcher.py:111 +#: GuiDatabase.py:115 GuiImapFetcher.py:123 msgid "Password" msgstr "Jelszó" -#: GuiDatabase.py:108 +#: GuiDatabase.py:116 msgid "Host" msgstr "Kiszolgáló" -#: GuiDatabase.py:109 +#: GuiDatabase.py:117 msgid "Default" msgstr "Alapértelmezett" -#: GuiDatabase.py:110 +#: GuiDatabase.py:118 msgid "Status" msgstr "Állapot" -#: GuiDatabase.py:243 +#: GuiDatabase.py:251 msgid "Testing database connections ... " msgstr "Adatbázis-kapcsolatok ellenőrzése ..." -#: GuiDatabase.py:273 +#: GuiDatabase.py:281 msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" msgstr "loaddbs: kapcolódási próbálkozás: %s/%s, %s, %s/%s" -#: GuiDatabase.py:276 +#: GuiDatabase.py:284 msgid " connected ok" msgstr " kapcsolódás OK" -#: GuiDatabase.py:283 +#: GuiDatabase.py:291 msgid " not connected but no exception" msgstr " nem kapcsolódott, de nincs hibaüzenet" -#: GuiDatabase.py:285 fpdb.pyw:904 +#: GuiDatabase.py:293 fpdb.pyw:906 msgid "" "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" "MySQL szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " "jogosultságaid?" -#: GuiDatabase.py:289 +#: GuiDatabase.py:297 msgid "" "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check " "that the MySQL service has been started" @@ -578,14 +894,14 @@ msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " "- Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" -#: GuiDatabase.py:293 fpdb.pyw:909 +#: GuiDatabase.py:301 fpdb.pyw:911 msgid "" "Postgres Server reports: Access denied. Are your permissions set correctly?" msgstr "" "Postgres szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " "jogosultságaid?" -#: GuiDatabase.py:296 +#: GuiDatabase.py:304 msgid "" "Postgres client reports: Unable to connect - Please check that the Postgres " "service has been started" @@ -593,27 +909,27 @@ msgstr "" "Postgres kliens jelenti: Nem sikerült a kapcsolódás. .Kérlek ellenőrizd, " "hogy a Postgres szolgáltatás el van-e indítva" -#: GuiDatabase.py:313 +#: GuiDatabase.py:321 msgid "finished." msgstr "befejezve." -#: GuiDatabase.py:323 +#: GuiDatabase.py:331 msgid "loaddbs error: " msgstr "loaddbs hiba: " -#: GuiDatabase.py:344 GuiLogView.py:192 GuiTourneyPlayerStats.py:454 +#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 msgid "***sortCols error: " msgstr "***sortCols hiba: " -#: GuiDatabase.py:346 +#: GuiDatabase.py:354 msgid "sortCols error: " msgstr "sortCols hiba: " -#: GuiDatabase.py:416 GuiLogView.py:205 +#: GuiDatabase.py:424 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "Napló böngésző (teszt)" -#: GuiDatabase.py:421 GuiLogView.py:210 +#: GuiDatabase.py:429 GuiLogView.py:218 msgid "Log Viewer" msgstr "Napló böngésző" @@ -633,37 +949,38 @@ msgstr "" "A program más részeit, pl. az importálást vagy a HUD-ot,\n" "nem érinti ez a probléma." -#: GuiGraphViewer.py:129 GuiGraphViewer.py:243 GuiSessionViewer.py:343 +#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:355 msgid "***Error: " msgstr "***Hiba: " -#: GuiGraphViewer.py:159 GuiPositionalStats.py:166 GuiSessionViewer.py:192 -#: GuiTourneyPlayerStats.py:265 +#: GuiGraphViewer.py:171 GuiPositionalStats.py:178 GuiRingPlayerStats.py:252 +#: GuiSessionViewer.py:204 GuiTourneyPlayerStats.py:277 msgid "No sites selected - defaulting to PokerStars" msgstr "Nincs kiválasztott terem - PokerStars használata" -#: GuiGraphViewer.py:164 GuiPositionalStats.py:169 GuiSessionViewer.py:195 -#: GuiTourneyPlayerStats.py:268 +#: GuiGraphViewer.py:176 GuiPositionalStats.py:181 GuiRingPlayerStats.py:255 +#: GuiSessionViewer.py:207 GuiTourneyPlayerStats.py:280 msgid "No player ids found" msgstr "Nincs játékosazonosító" -#: GuiGraphViewer.py:169 GuiPositionalStats.py:172 GuiSessionViewer.py:198 +#: GuiGraphViewer.py:181 GuiPositionalStats.py:184 GuiRingPlayerStats.py:258 +#: GuiSessionViewer.py:210 msgid "No limits found" msgstr "Nem található limit" -#: GuiGraphViewer.py:179 +#: GuiGraphViewer.py:191 msgid "Graph generated in: %s" msgstr "Grafikon létrehozva %s mp alatt" -#: GuiGraphViewer.py:183 +#: GuiGraphViewer.py:195 msgid "Hands" msgstr "Leosztások" -#: GuiGraphViewer.py:187 +#: GuiGraphViewer.py:199 msgid "No Data for Player(s) Found" msgstr "Nem található adat a játékos(ok)ra vonatkozóan" -#: GuiGraphViewer.py:210 GuiGraphViewer.py:229 +#: GuiGraphViewer.py:222 GuiGraphViewer.py:241 msgid "" "Hands: %d\n" "Profit: $%.2f" @@ -671,64 +988,64 @@ msgstr "" "Leosztások: %d\n" "Profit: $%.2f" -#: GuiGraphViewer.py:211 GuiGraphViewer.py:230 +#: GuiGraphViewer.py:223 GuiGraphViewer.py:242 msgid "Showdown: $%.2f" msgstr "Mutatással: $%.2f" -#: GuiGraphViewer.py:212 GuiGraphViewer.py:231 +#: GuiGraphViewer.py:224 GuiGraphViewer.py:243 msgid "Non-showdown: $%.2f" msgstr "Mutatás nélkül: $%.2f" -#: GuiGraphViewer.py:220 +#: GuiGraphViewer.py:232 msgid "Profit graph for ring games" msgstr "Bevételgrafikon a készpénzes játékokról" -#: GuiGraphViewer.py:340 +#: GuiGraphViewer.py:352 msgid "Please choose the directory you wish to export to:" msgstr "Válaszd ki az exportálás könyvtárát:" -#: GuiGraphViewer.py:353 +#: GuiGraphViewer.py:365 msgid "Closed, no graph exported" msgstr "Bezárva, nincs exportált grafikon" -#: GuiGraphViewer.py:371 +#: GuiGraphViewer.py:383 msgid "Graph created" msgstr "Grafikon létrehozva" -#: GuiImapFetcher.py:37 +#: GuiImapFetcher.py:49 msgid "To cancel just close this tab." msgstr "A megszakításhoz csukd be ezt a fület." -#: GuiImapFetcher.py:40 +#: GuiImapFetcher.py:52 msgid "_Save" msgstr "Menté_s" -#: GuiImapFetcher.py:44 +#: GuiImapFetcher.py:56 msgid "_Import All" msgstr "Mindet _importál" -#: GuiImapFetcher.py:48 +#: GuiImapFetcher.py:60 msgid "If you change the config you must save before importing" msgstr "" "Ha megváltoztatod a beállításokat, akkor importálás előtt előbb el kell " "mentened őket." -#: GuiImapFetcher.py:91 +#: GuiImapFetcher.py:103 msgid "Starting import. Please wait." msgstr "Importálás indítása. Kérlek várj." -#: GuiImapFetcher.py:95 +#: GuiImapFetcher.py:107 msgid "Finished import without error." msgstr "Importálás sikeresen befejezve." -#: GuiImapFetcher.py:98 +#: GuiImapFetcher.py:110 msgid "" "Login to mailserver failed: please check mailserver, username and password" msgstr "" "A bejelentkezés a levelezőkiszolgálóra meghiúsult: kérlek ellenőrizd a " "megadott levelezőkiszolgálót, a felhasználónevet és a jelszót." -#: GuiImapFetcher.py:101 +#: GuiImapFetcher.py:113 msgid "" "Could not connect to mailserver: check mailserver and use SSL settings and " "internet connectivity" @@ -736,62 +1053,96 @@ msgstr "" "nem sikerült a csatlakozás a levelezőkiszolgálóhoz: ellenőrizd a " "levelezőkiszolgáló és az SSL beállításait, illetve az internetkapcsolatot." -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Fetch Type" msgstr "Fogadás módja" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Mail Folder" msgstr "Levelek mappája" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Mailserver" msgstr "Levelezőkiszolgáló" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Site" msgstr "Terem" -#: GuiImapFetcher.py:111 +#: GuiImapFetcher.py:123 msgid "Use SSL" msgstr "SSL használata" -#: GuiImapFetcher.py:142 +#: GuiImapFetcher.py:154 msgid "Yes" msgstr "Igen" -#: GuiImapFetcher.py:143 +#: GuiImapFetcher.py:155 msgid "No" msgstr "Nem" -#: GuiLogView.py:53 +#: GuiLogView.py:61 msgid "Log Messages" msgstr "Naplóbejegyzések" -#: GuiPositionalStats.py:135 +#: GuiPositionalStats.py:147 msgid "DEBUG: activesite set to %s" msgstr "DEBUG: aktív terem: %s" -#: GuiPositionalStats.py:321 +#: GuiPositionalStats.py:333 msgid "Positional Stats page displayed in %4.2f seconds" msgstr "Pozíciós statisztikák megjelenítve %4.2f mp alatt" -#: GuiPrefs.py:70 +#: GuiPrefs.py:81 msgid "Setting" msgstr "Beállítás" -#: GuiPrefs.py:76 +#: GuiPrefs.py:87 msgid "Value (double-click to change)" msgstr "Érték (kattints duplán a módosításhoz)" -#: GuiPrefs.py:176 +#: GuiPrefs.py:187 msgid "Test Preferences Dialog" msgstr "Beállítási párbeszéd (teszt)" -#: GuiPrefs.py:181 fpdb.pyw:294 +#: GuiPrefs.py:192 fpdb.pyw:296 msgid "Preferences" msgstr "Beállítások" +#: GuiRingPlayerStats.py:323 GuiSessionViewer.py:249 +#: GuiTourneyPlayerStats.py:252 +msgid "Stats page displayed in %4.2f seconds" +msgstr "Statisztikák megjelenítve %4.2f mp alatt" + +#: GuiRingPlayerStats.py:370 +#, fuzzy +msgid "***sortnums error: " +msgstr "***sortCols hiba: " + +#: GuiRingPlayerStats.py:392 +#, fuzzy +msgid "***sortcols error: " +msgstr "***sortCols hiba: " + +#: GuiRingPlayerStats.py:683 +msgid "Detailed Filters" +msgstr "" + +#: GuiRingPlayerStats.py:692 +#, fuzzy +msgid "Hand Filters:" +msgstr "és mások" + +#: GuiRingPlayerStats.py:705 +#, fuzzy +msgid "between" +msgstr "Min:" + +#: GuiRingPlayerStats.py:706 +#, fuzzy +msgid "and" +msgstr "Leosztások" + #: GuiSessionViewer.py:41 msgid "Failed to load numpy and/or matplotlib in Session Viewer" msgstr "Nem sikerült a numpy és/vagy a matplotlib betöltése a Session nézetben" @@ -800,39 +1151,35 @@ msgstr "Nem sikerült a numpy és/vagy a matplotlib betöltése a Session nézet msgid "ImportError: %s" msgstr "ImportError: %s" -#: GuiSessionViewer.py:78 +#: GuiSessionViewer.py:90 msgid "Hand Breakdown for all levels listed above" msgstr "Kezdőkezekre bontva a fenti limiteknél" -#: GuiSessionViewer.py:237 GuiTourneyPlayerStats.py:240 -msgid "Stats page displayed in %4.2f seconds" -msgstr "Statisztikák megjelenítve %4.2f mp alatt" - -#: GuiSessionViewer.py:364 +#: GuiSessionViewer.py:376 msgid "Session candlestick graph" msgstr "Session gyertya grafikon" -#: GuiSessionViewer.py:367 +#: GuiSessionViewer.py:379 msgid "Sessions" msgstr "Sessionök" -#: GuiTourneyPlayerStats.py:72 +#: GuiTourneyPlayerStats.py:84 msgid "_Refresh Stats" msgstr "Statisztikák f_rissítése" -#: GuiTourneyViewer.py:37 +#: GuiTourneyViewer.py:49 msgid "Enter the tourney number you want to display:" msgstr "Add meg a megjelenítendő verseny azonosítóját" -#: GuiTourneyViewer.py:43 +#: GuiTourneyViewer.py:55 msgid "_Display" msgstr "_Mutat" -#: GuiTourneyViewer.py:50 +#: GuiTourneyViewer.py:62 msgid "Display _Player" msgstr "_Játékost mutat" -#: GuiTourneyViewer.py:65 +#: GuiTourneyViewer.py:77 msgid "" "Tournament not found - please ensure you imported it and selected the " "correct site" @@ -840,7 +1187,7 @@ msgstr "" "A verseny nem található - kérlek ellenőrizd, hogy importáltad-e már, és hogy " "a helyes termet választottad" -#: GuiTourneyViewer.py:93 +#: GuiTourneyViewer.py:105 msgid "" "Player or tourney not found - please ensure you imported it and selected the " "correct site" @@ -848,15 +1195,15 @@ msgstr "" "A játékos vagy averseny nem található - kérlek ellenőrizd, hogy importáltad-" "e már, és hogy a helyes termet választottad" -#: GuiTourneyViewer.py:107 +#: GuiTourneyViewer.py:119 msgid "N/A" msgstr "N/A" -#: GuiTourneyViewer.py:128 +#: GuiTourneyViewer.py:140 msgid "invalid entry in tourney number - must enter numbers only" msgstr "érvénytelen érték a versenyazonosítónál - csak számok használhatóak" -#: HUD_main.pyw:77 +#: HUD_main.pyw:86 msgid "" "\n" "HUD_main: starting ..." @@ -864,19 +1211,19 @@ msgstr "" "\n" "HUD_main: indítás ..." -#: HUD_main.pyw:80 fpdb.pyw:874 +#: HUD_main.pyw:89 fpdb.pyw:876 msgid "Logfile is " msgstr "A naplófájl " -#: HUD_main.pyw:81 +#: HUD_main.pyw:90 msgid "HUD_main starting: using db name = %s" msgstr "HUD_main indítás: " -#: HUD_main.pyw:86 +#: HUD_main.pyw:95 msgid "Note: error output is being diverted to:\n" msgstr "Megjegyzés: a hibakimenet ide van átirányítva:\n" -#: HUD_main.pyw:87 fpdb.pyw:1136 +#: HUD_main.pyw:96 fpdb.pyw:1138 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -884,324 +1231,324 @@ msgstr "" "\n" "Bármilyen nagyobb hiba _csak_oda_ kerül kiírásra.\n" -#: HUD_main.pyw:88 +#: HUD_main.pyw:97 msgid "Note: error output is being diverted to:" msgstr "Megjegyzés: a hibakimenet ide van átirányítva:" -#: HUD_main.pyw:89 +#: HUD_main.pyw:98 msgid "Any major error will be reported there _only_." msgstr "Bármilyen nagyobb hiba _csak_oda_ kerül kiírásra." -#: HUD_main.pyw:92 +#: HUD_main.pyw:101 msgid "HUD_main: starting ...\n" msgstr "HUD_main: indítás ...\n" -#: HUD_main.pyw:105 HUD_run_me.py:62 +#: HUD_main.pyw:114 HUD_run_me.py:62 msgid "Closing this window will exit from the HUD." msgstr "Ezen ablak bezárása a HUD-ot is bezárja." -#: HUD_main.pyw:108 HUD_run_me.py:66 +#: HUD_main.pyw:117 HUD_run_me.py:66 msgid "HUD Main Window" msgstr "HUD Főablak" -#: HUD_main.pyw:117 +#: HUD_main.pyw:126 msgid "Terminating normally." msgstr "Normál leállás." -#: HUD_main.pyw:221 +#: HUD_main.pyw:230 msgid "Received hand no %s" msgstr "Leosztás fogadva, azonosító: %s" -#: HUD_main.pyw:240 +#: HUD_main.pyw:249 msgid "HUD_main.read_stdin: hand processing starting ..." msgstr "HUD_main.read_stdin: leosztás feldolgozása indul" -#: HUD_main.pyw:266 +#: HUD_main.pyw:275 msgid "hud_dict[%s] was not found\n" msgstr "hud_dict[%s] nincs meg\n" -#: HUD_main.pyw:267 +#: HUD_main.pyw:276 msgid "will not send hand\n" msgstr "leosztás nem lesz elküldve\n" -#: HUD_main.pyw:301 +#: HUD_main.pyw:310 msgid "HUD create: table name %s not found, skipping." msgstr "HUD létrehozás: %s nevű asztal nincs meg, kihagyás." -#: HUD_main.pyw:309 +#: HUD_main.pyw:318 msgid "Table \"%s\" no longer exists\n" msgstr "\"%s\" nevű asztal már nem létezik\n" -#: HUD_main.pyw:312 +#: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" msgstr "HUD_main indítása\n" -#: HUD_run_me.py:51 +#: HUD_run_me.py:51 TournamentTracker.py:317 msgid "Using db name = %s\n" msgstr "%s adatbázis használata\n" -#: Hand.py:138 +#: Hand.py:150 msgid "BB" msgstr "BB" -#: Hand.py:139 +#: Hand.py:151 msgid "SB" msgstr "SB" -#: Hand.py:140 +#: Hand.py:152 msgid "BUTTONPOS" msgstr "GOMB" -#: Hand.py:141 +#: Hand.py:153 msgid "HAND NO." msgstr "LEOSZTÁS" -#: Hand.py:142 +#: Hand.py:154 TourneySummary.py:134 msgid "SITE" msgstr "TEREM" -#: Hand.py:143 +#: Hand.py:155 msgid "TABLE NAME" msgstr "ASZTAL NEVE" -#: Hand.py:144 +#: Hand.py:156 TourneySummary.py:144 msgid "HERO" msgstr "JÁTÉKOS" -#: Hand.py:145 +#: Hand.py:157 TourneySummary.py:145 msgid "MAXSEATS" msgstr "MAX. SZÉKEK" -#: Hand.py:146 +#: Hand.py:158 msgid "LEVEL" msgstr "SZINT" -#: Hand.py:147 +#: Hand.py:159 TourneySummary.py:150 msgid "MIXED" msgstr "KEVERT" -#: Hand.py:148 +#: Hand.py:160 msgid "LASTBET" msgstr "UTOLSÓ TÉT" -#: Hand.py:149 +#: Hand.py:161 msgid "ACTION STREETS" msgstr "AKCIÓ UTCÁK" -#: Hand.py:150 +#: Hand.py:162 msgid "STREETS" msgstr "UTCÁK" -#: Hand.py:151 +#: Hand.py:163 msgid "ALL STREETS" msgstr "MINDEN UTCA" -#: Hand.py:152 +#: Hand.py:164 msgid "COMMUNITY STREETS" msgstr "KÖZÖS UTCÁK" -#: Hand.py:153 +#: Hand.py:165 msgid "HOLE STREETS" msgstr "HOLE UTCÁK" -#: Hand.py:154 +#: Hand.py:166 msgid "COUNTED SEATS" msgstr "SZÁMOLT SZÉKEK" -#: Hand.py:155 +#: Hand.py:167 msgid "DEALT" msgstr "OSZTOTT" -#: Hand.py:156 +#: Hand.py:168 msgid "SHOWN" msgstr "MUTATOTT" -#: Hand.py:157 +#: Hand.py:169 msgid "MUCKED" msgstr "NEM MUTATOTT" -#: Hand.py:158 +#: Hand.py:170 msgid "TOTAL POT" msgstr "TELJES KASSZA" -#: Hand.py:159 +#: Hand.py:171 msgid "TOTAL COLLECTED" msgstr "TELJES BEGYŰJTÖTT" -#: Hand.py:160 +#: Hand.py:172 msgid "RAKE" msgstr "JUTALÉK" -#: Hand.py:161 +#: Hand.py:173 TourneySummary.py:135 msgid "START TIME" msgstr "KEZDÉSI IDŐ" -#: Hand.py:162 +#: Hand.py:174 msgid "TOURNAMENT NO" msgstr "VERSENY SZÁM" -#: Hand.py:163 +#: Hand.py:175 TourneySummary.py:140 msgid "TOURNEY ID" msgstr "VERSENYAZONOSÍTÓ" -#: Hand.py:164 +#: Hand.py:176 TourneySummary.py:139 msgid "TOURNEY TYPE ID" msgstr "VERSENYTÍPUS AZONOSÍTÓ" -#: Hand.py:165 +#: Hand.py:177 TourneySummary.py:141 msgid "BUYIN" msgstr "NEVEZÉSI DÍJ" -#: Hand.py:166 +#: Hand.py:178 msgid "BUYIN CURRENCY" msgstr "NEVEZÉSI DÍJ PÉNZNEME" -#: Hand.py:167 +#: Hand.py:179 msgid "BUYIN CHIPS" msgstr "KEZDŐ ZSETONOK" -#: Hand.py:168 +#: Hand.py:180 TourneySummary.py:142 msgid "FEE" msgstr "DÍJ" -#: Hand.py:169 +#: Hand.py:181 msgid "IS REBUY" msgstr "REBUY" -#: Hand.py:170 +#: Hand.py:182 msgid "IS ADDON" msgstr "ADDON" -#: Hand.py:171 +#: Hand.py:183 msgid "IS KO" msgstr "KIÜTÉSES" -#: Hand.py:172 +#: Hand.py:184 TourneySummary.py:166 msgid "KO BOUNTY" msgstr "FEJVADÁSZ" -#: Hand.py:173 +#: Hand.py:185 msgid "IS MATRIX" msgstr "MÁTRIX" -#: Hand.py:174 +#: Hand.py:186 msgid "IS SHOOTOUT" msgstr "SHOOTOUT" -#: Hand.py:175 +#: Hand.py:187 TourneySummary.py:167 msgid "TOURNEY COMMENT" msgstr "VERSENY MEGJEGYZÉS" -#: Hand.py:178 +#: Hand.py:190 TourneySummary.py:179 msgid "PLAYERS" msgstr "JÁTÉKOSOK" -#: Hand.py:179 +#: Hand.py:191 msgid "STACKS" msgstr "LETÉTEK" -#: Hand.py:180 +#: Hand.py:192 msgid "POSTED" msgstr "BETETT" -#: Hand.py:181 +#: Hand.py:193 msgid "POT" msgstr "KASSZA" -#: Hand.py:182 +#: Hand.py:194 msgid "SEATING" msgstr "ÜLTETÉS" -#: Hand.py:183 +#: Hand.py:195 msgid "GAMETYPE" msgstr "JÁTÉKTÍPUS" -#: Hand.py:184 +#: Hand.py:196 msgid "ACTION" msgstr "AKCIÓ" -#: Hand.py:185 +#: Hand.py:197 msgid "COLLECTEES" msgstr "BEGYŰJTŐK" -#: Hand.py:186 +#: Hand.py:198 msgid "BETS" msgstr "TÉTEK" -#: Hand.py:187 +#: Hand.py:199 msgid "BOARD" msgstr "ASZTAL" -#: Hand.py:188 +#: Hand.py:200 msgid "DISCARDS" msgstr "DOBÁSOK" -#: Hand.py:189 +#: Hand.py:201 msgid "HOLECARDS" msgstr "KEZDŐKÉZ" -#: Hand.py:190 +#: Hand.py:202 msgid "TOURNEYS PLAYER IDS" msgstr "VERSENYJÁTÉKOS AZONOSÍTÓK" -#: Hand.py:213 Hand.py:1232 +#: Hand.py:225 Hand.py:1244 msgid "[ERROR] Tried to add holecards for unknown player: %s" msgstr "[ERROR] Kezdőkéz hozzáadása ismeretlen játékoshoz: %s" -#: Hand.py:266 +#: Hand.py:278 msgid "Hand.insert(): hid #: %s is a duplicate" msgstr "Hand.insert(): %s leosztásazonosító duplikáció" -#: Hand.py:305 +#: Hand.py:317 msgid "markstreets didn't match - Assuming hand cancelled" msgstr "markStreets nem egyezik - Leosztás érvénytelenítését feltételezem" -#: Hand.py:307 +#: Hand.py:319 msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" msgstr "" "FpdbParseError: markStreets hívása meghiúsult: az első 100 karakter: '%s'" -#: Hand.py:311 +#: Hand.py:323 msgid "DEBUG: checkPlayerExists %s fail" msgstr "DEBUG: checkPlayerExists %s játékos nem létezik." -#: Hand.py:312 +#: Hand.py:324 msgid "checkPlayerExists: '%s' failed." msgstr "checkPlayerExists: '%s' játékos nem létezik." -#: Hand.py:395 +#: Hand.py:407 msgid "%s %s calls %s" msgstr "%s utcán %s játékos ennyit megad: %s" -#: Hand.py:465 +#: Hand.py:477 msgid "%s %s raise %s" msgstr "%s utcán %s játékos eddig emel: %s" -#: Hand.py:476 +#: Hand.py:488 msgid "%s %s bets %s" msgstr "%s utcán %s játékos ennyit hív: %s" -#: Hand.py:495 +#: Hand.py:507 msgid "%s %s folds" msgstr "%s utcán %s játékos dob" -#: Hand.py:504 +#: Hand.py:516 msgid "%s %s checks" msgstr "%s utcán %s játékos passzol" -#: Hand.py:524 +#: Hand.py:536 msgid "addShownCards %s hole=%s all=%s" msgstr "addShownCards %s játékos kézben=%s mind=%s" -#: Hand.py:635 +#: Hand.py:647 msgid "" "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, " "expecting datetime.date object, received:" @@ -1209,18 +1556,18 @@ msgstr "" "*** ERROR - HAND: writeGameLine hívása nem várt STARTTIME értékkel, datetime." "date objektumot vár, ezt kapta:" -#: Hand.py:636 +#: Hand.py:648 msgid "" "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" "*** Győződj meg róla, hogy a feldolgozód helyesen állítja be a hand." "startTime értékét!" -#: Hand.py:637 +#: Hand.py:649 msgid "*** Game String:" msgstr "*** Játék sztring:" -#: Hand.py:691 +#: Hand.py:703 msgid "" "*** Parse error reading blinds (check compilePlayerRegexs as a likely " "culprit)" @@ -1228,75 +1575,75 @@ msgstr "" "*** Feldolgozási hiba a vakok beolvasása közben (valószínűleg a " "compilePlayerRegex-eket kell ellenőrizni)" -#: Hand.py:718 +#: Hand.py:730 msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" msgstr "" "HoldemOmahaHand.__init__: nem lehet a leosztást összeállítani az " "adatbázisból a leosztás azonosítója nélkül" -#: Hand.py:720 +#: Hand.py:732 msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" msgstr "" "HoldemOmahaHand.__init__: sem a HHC, sem az adatbázis+leosztásaonosító nem " "lett megadva" -#: Hand.py:1101 +#: Hand.py:1113 msgid "*** DEALING HANDS ***" msgstr "*** OSZTÁS ***" -#: Hand.py:1106 +#: Hand.py:1118 msgid "Dealt to %s: [%s]" msgstr "%s kapja: [%s]" -#: Hand.py:1111 +#: Hand.py:1123 msgid "*** FIRST DRAW ***" msgstr "*** ELSŐ CSERE ***" -#: Hand.py:1121 +#: Hand.py:1133 msgid "*** SECOND DRAW ***" msgstr "*** MÁSODIK CSERE ***" -#: Hand.py:1131 +#: Hand.py:1143 msgid "*** THIRD DRAW ***" msgstr "*** HARMADIK CSERE ***" -#: Hand.py:1141 Hand.py:1359 +#: Hand.py:1153 Hand.py:1371 msgid "*** SHOW DOWN ***" msgstr "*** MUTATÁS ***" -#: Hand.py:1156 Hand.py:1374 +#: Hand.py:1168 Hand.py:1386 msgid "*** SUMMARY ***" msgstr "*** ÖSSZEGZÉS ***" -#: Hand.py:1241 +#: Hand.py:1253 msgid "%s %s completes %s" msgstr "%s utcán %s játékos kiegészít erre: %s" -#: Hand.py:1259 +#: Hand.py:1271 msgid "Bringin: %s, %s" msgstr "Beülő: %s, %s" -#: Hand.py:1299 +#: Hand.py:1311 msgid "*** 3RD STREET ***" msgstr "*** HARMADIK UTCA ***" -#: Hand.py:1313 +#: Hand.py:1325 msgid "*** 4TH STREET ***" msgstr "*** NEGYEDIK UTCA ***" -#: Hand.py:1325 +#: Hand.py:1337 msgid "*** 5TH STREET ***" msgstr "*** ÖTÖDIK UTCA ***" -#: Hand.py:1337 +#: Hand.py:1349 msgid "*** 6TH STREET ***" msgstr "*** HATODIK UTCA ***" -#: Hand.py:1347 +#: Hand.py:1359 msgid "*** RIVER ***" msgstr "*** RIVER ***" -#: Hand.py:1439 +#: Hand.py:1451 msgid "" "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should " "be impossible for anyone who is not a hero" @@ -1304,93 +1651,93 @@ msgstr "" "join_holecards: a kézbe kapott lapok száma vagy < 4, 4 or 7 - 5 és 6 " "mindenki számára lehetetlen, aki nem hős" -#: Hand.py:1440 +#: Hand.py:1452 msgid "join_holcards: holecards(%s): %s" msgstr "join_holcards: holecards(%s): %s" -#: Hand.py:1523 +#: Hand.py:1535 msgid "DEBUG: call Pot.end() before printing pot total" msgstr "DEBUG: Pot.end() hívása a teljes kassza kiírása előtt" -#: Hand.py:1525 +#: Hand.py:1537 msgid "FpdbError in printing Hand object" msgstr "FpdbError egy Hand objektum kiírása közben" -#: HandHistoryConverter.py:126 +#: HandHistoryConverter.py:134 msgid "Failed sanity check" msgstr "A megfelelőségi ellenőrzésen nem ment át" -#: HandHistoryConverter.py:134 +#: HandHistoryConverter.py:142 msgid "Tailing '%s'" msgstr "'%s' követése" -#: HandHistoryConverter.py:141 +#: HandHistoryConverter.py:149 msgid "HHC.start(follow): processHand failed: Exception msg: '%s'" msgstr "HHC.start(follow): processHand meghiúsult: A hibaüzenet szövege: '%s'" -#: HandHistoryConverter.py:155 +#: HandHistoryConverter.py:163 msgid "HHC.start(): processHand failed: Exception msg: '%s'" msgstr "HHC.start(): processHand meghiúsult: A hibaüzenet szövege: '%s'" -#: HandHistoryConverter.py:159 +#: HandHistoryConverter.py:167 msgid "Read %d hands (%d failed) in %.3f seconds" msgstr "%d leosztás beolvasva (%d sikertelen) %.3f mp alatt" -#: HandHistoryConverter.py:165 +#: HandHistoryConverter.py:173 msgid "Summary file '%s' correctly parsed (took %.3f seconds)" msgstr "A(z) '%s' összefoglaló fájl rendben feldolgozva (%.3f mp)" -#: HandHistoryConverter.py:167 +#: HandHistoryConverter.py:175 msgid "Error converting summary file '%s' (took %.3f seconds)" msgstr "Hiba a(z) '%s' összefoglaló fájl konvertálása közben (%.3f mp)" -#: HandHistoryConverter.py:170 +#: HandHistoryConverter.py:178 msgid "Error converting '%s'" msgstr "Hiba a(z) '%s' konvertálása közben" -#: HandHistoryConverter.py:201 +#: HandHistoryConverter.py:209 msgid "%s changed inode numbers from %d to %d" msgstr "%s megváltoztatta az inode számokat %d =>%d" -#: HandHistoryConverter.py:246 +#: HandHistoryConverter.py:254 msgid "Converting starsArchive format to readable" msgstr "starsArchive formátum konvertálása olvashatóra" -#: HandHistoryConverter.py:251 +#: HandHistoryConverter.py:259 msgid "Converting ftpArchive format to readable" msgstr "ftpArchive formátum konvertálása olvashatóra" -#: HandHistoryConverter.py:256 +#: HandHistoryConverter.py:264 msgid "Read no hands." msgstr "Nem történt beolvasás." -#: HandHistoryConverter.py:393 +#: HandHistoryConverter.py:401 msgid "HH Sanity Check: output and input files are the same, check config" msgstr "" "HH Sanity Check: a kimeneti és bemeneti fájlok azonosak, ellenőrizd a " "beállításokat" -#: HandHistoryConverter.py:428 +#: HandHistoryConverter.py:436 msgid "Reading stdin with %s" msgstr "Standard bemenet olvasása ezzel: %s" -#: HandHistoryConverter.py:443 +#: HandHistoryConverter.py:451 msgid "unable to read file with any codec in list!" msgstr "a file olvasása nem sikerült egyik listabeli kódolással sem" -#: HandHistoryConverter.py:597 +#: HandHistoryConverter.py:605 msgid "Unable to create output directory %s for HHC!" msgstr "A %s kimeneti könyvtár nem hozható létre a feldolgozó számára'" -#: HandHistoryConverter.py:598 +#: HandHistoryConverter.py:606 msgid "*** ERROR: UNABLE TO CREATE OUTPUT DIRECTORY" msgstr "*** ERROR: A KIMENETI KÖNYVTÁR NEM HOZHATÓ LÉTRE" -#: HandHistoryConverter.py:600 +#: HandHistoryConverter.py:608 msgid "Created directory '%s'" msgstr "'%s' könyvtár létrehozva" -#: HandHistoryConverter.py:604 +#: HandHistoryConverter.py:612 msgid "out_path %s couldn't be opened" msgstr "%s kimeneti könyvtár nem nyitható meg" @@ -1420,99 +1767,99 @@ msgstr "" "Eddig %d leosztást játszottál\n" "a %s teremben." -#: Hud.py:137 +#: Hud.py:149 msgid "Kill This HUD" msgstr "Ezen HUD kilövése" -#: Hud.py:142 +#: Hud.py:154 msgid "Save HUD Layout" msgstr "HUD elrendezés mentése" -#: Hud.py:146 +#: Hud.py:158 msgid "Reposition StatWindows" msgstr "Újrapozícionálás" -#: Hud.py:150 +#: Hud.py:162 msgid "Show Player Stats" msgstr "Játékos statisztikák megjelenítése" -#: Hud.py:155 Hud.py:224 +#: Hud.py:167 Hud.py:236 msgid "For This Blind Level Only" msgstr "Csak erre a vakszintre" -#: Hud.py:160 Hud.py:229 +#: Hud.py:172 Hud.py:241 msgid "For Multiple Blind Levels:" msgstr "Több vakszintre:" -#: Hud.py:163 Hud.py:232 +#: Hud.py:175 Hud.py:244 msgid " 0.5 to 2.0 x Current Blinds" msgstr " A jelenlegi 0.5-2-szerese" -#: Hud.py:168 Hud.py:237 +#: Hud.py:180 Hud.py:249 msgid " 0.33 to 3.0 x Current Blinds" msgstr "A jelenlegi 0.33-3-szorosa" -#: Hud.py:173 Hud.py:242 +#: Hud.py:185 Hud.py:254 msgid " 0.1 to 10 x Current Blinds" msgstr "A jelenlegi 0.1-10-szerese" -#: Hud.py:178 Hud.py:247 +#: Hud.py:190 Hud.py:259 msgid " All Levels" msgstr " Minden limit" -#: Hud.py:186 Hud.py:255 -msgid " Any Number" -msgstr " Bármennyi" - -#: Hud.py:191 Hud.py:260 -msgid " Custom" -msgstr " Egyedi" - -#: Hud.py:196 Hud.py:265 -msgid " Exact" -msgstr " Csak ez" - -#: Hud.py:201 Hud.py:270 -msgid "Since:" -msgstr "Ez óta:" - -#: Hud.py:204 Hud.py:273 -msgid " All Time" -msgstr " Mind" - -#: Hud.py:209 Hud.py:278 -msgid " Session" -msgstr " Session" - -#: Hud.py:214 Hud.py:283 -msgid " %s Days" -msgstr " Az elmúlt %s nap" - -#: Hud.py:219 -msgid "Show Opponent Stats" -msgstr "Ellenfél statisztikáinak mutatása" - -#: Hud.py:252 +#: Hud.py:195 Hud.py:264 msgid "For #Seats:" msgstr "Ennyi szék számára:" -#: Hud.py:341 +#: Hud.py:198 Hud.py:267 +msgid " Any Number" +msgstr " Bármennyi" + +#: Hud.py:203 Hud.py:272 +msgid " Custom" +msgstr " Egyedi" + +#: Hud.py:208 Hud.py:277 +msgid " Exact" +msgstr " Csak ez" + +#: Hud.py:213 Hud.py:282 +msgid "Since:" +msgstr "Ez óta:" + +#: Hud.py:216 Hud.py:285 +msgid " All Time" +msgstr " Mind" + +#: Hud.py:221 Hud.py:290 +msgid " Session" +msgstr " Session" + +#: Hud.py:226 Hud.py:295 +msgid " %s Days" +msgstr " Az elmúlt %s nap" + +#: Hud.py:231 +msgid "Show Opponent Stats" +msgstr "Ellenfél statisztikáinak mutatása" + +#: Hud.py:353 msgid "Debug StatWindows" msgstr "StatWindows debugolása" -#: Hud.py:345 +#: Hud.py:357 msgid "Set max seats" msgstr "Max székek beállítása" -#: Hud.py:528 +#: Hud.py:540 msgid "Updating config file" msgstr "Konfigurációs fájl frissítése" -#: Hud.py:537 +#: Hud.py:549 msgid "No layout found for %d-max games for site %s\n" msgstr "Nem található elrendezés a %d fős asztalok számára a %s teremben\n" -#: Hud.py:551 +#: Hud.py:563 msgid "" "exception in Hud.adj_seats\n" "\n" @@ -1520,15 +1867,15 @@ msgstr "" "hiba a Hud.adj_seats helyen\n" "\n" -#: Hud.py:552 +#: Hud.py:564 msgid "error is %s" msgstr "A hiba a következő: %s" -#: Hud.py:559 +#: Hud.py:571 msgid "Error finding actual seat.\n" msgstr "Hiba az aktuális szék keresése közben.\n" -#: Hud.py:575 +#: Hud.py:587 msgid "" "------------------------------------------------------------\n" "Creating hud from hand %s\n" @@ -1536,7 +1883,7 @@ msgstr "" "------------------------------------------------------------\n" "HUD készítése ebből a leosztásból: %s\n" -#: Hud.py:624 +#: Hud.py:636 msgid "" "KeyError at the start of the for loop in update in hud_main. How this can " "possibly happen is totally beyond my comprehension. Your HUD may be about to " @@ -1545,11 +1892,11 @@ msgstr "" "KeyError a for ciklus kezdeténél a hud_main-ban. Fogalmam sincs, hogy ez " "hogyan lehetséges. A HUD-od valószínűleg nagyon furcsa lesz. -Eric" -#: Hud.py:625 +#: Hud.py:637 msgid "(btw, the key was %s and statd is %s" msgstr "(ja, a kulcs %s volt a statd pedig %s)" -#: Hud.py:932 +#: Hud.py:944 msgid "" "Fake main window, blah blah, blah\n" "blah, blah" @@ -1557,15 +1904,15 @@ msgstr "" "Kamu főablak, bla bla, bla\n" "bla, bla" -#: Hud.py:940 +#: Hud.py:952 msgid "Table not found." msgstr "Az asztal nem található." -#: ImapFetcher.py:46 +#: ImapFetcher.py:54 msgid "response to logging in:" msgstr "válasz a bejelentkezésre:" -#: ImapFetcher.py:78 +#: ImapFetcher.py:86 msgid "completed running Imap import, closing server connection" msgstr "IMAP import befejezve, kapcsolat lezárása" @@ -1573,41 +1920,41 @@ msgstr "IMAP import befejezve, kapcsolat lezárása" msgid "No Name" msgstr "Nincs név" -#: Options.py:32 +#: Options.py:40 msgid "If passed error output will go to the console rather than ." msgstr "Ha be van állítva, akkor a hibakimenet a konzolra lesz irányítva." -#: Options.py:35 +#: Options.py:43 msgid "Overrides the default database name" msgstr "Felülbírálja az alapértelmezett adatbázis-nevet" -#: Options.py:38 +#: Options.py:46 msgid "Specifies a configuration file." msgstr "Megad egy konfigurációs fájlt." -#: Options.py:41 +#: Options.py:49 msgid "" "Indicates program was restarted with a different path (only allowed once)." msgstr "" "Jelzi a program más útvonallal való indítását (csak egyszer engedélyezett)" -#: Options.py:44 +#: Options.py:52 msgid "Input file" msgstr "Bemeneti fájl" -#: Options.py:47 +#: Options.py:55 msgid "Module name for Hand History Converter" msgstr "Modulnév a Leosztástörténet Konvertáló számára" -#: Options.py:51 +#: Options.py:59 msgid "Error logging level:" msgstr "Hibanaplózási szint:" -#: Options.py:54 +#: Options.py:62 msgid "Print version information and exit." msgstr "Verzióinformáció kiírása, majd kilépés." -#: Options.py:65 +#: Options.py:73 msgid "press enter to end" msgstr "nyomj ENTER-t a befejezéshez" @@ -1615,6 +1962,39 @@ msgstr "nyomj ENTER-t a befejezéshez" msgid "You need to manually enter the playername" msgstr "Meg kell adnod a játékos nevét" +#: PartyPokerToFpdb.py:215 +msgid "Cannot fetch field '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:219 +msgid "Unknown limit '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:224 +msgid "Unknown game type '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:258 +msgid "Cannot read HID for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:263 +msgid "Cannot read Handinfo for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:268 +msgid "Cannot read GameType for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +msgid "readButton: not found" +msgstr "readButton: nem található" + +#: PartyPokerToFpdb.py:479 +#, fuzzy +msgid "Unimplemented readAction: '%s' '%s'" +msgstr "DEBUG: nem ismert readAction: '%s' '%s'" + #: PokerStarsSummary.py:72 msgid "didn't recognise buyin currency in:" msgstr "nem sikerült felismerni a beülő pénznemét ebben:" @@ -1623,46 +2003,484 @@ msgstr "nem sikerült felismerni a beülő pénznemét ebben:" msgid "in not result starttime" msgstr "a starttime nem található részében" -#: PokerStarsToFpdb.py:172 +#: PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" -#: PokerStarsToFpdb.py:173 PokerStarsToFpdb.py:203 +#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "determineGameType: FpdbParseError" -#: PokerStarsToFpdb.py:174 +#: PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "Nem sikerült felismerni a játéktípust innen: '%s'" -#: PokerStarsToFpdb.py:204 +#: PokerStarsToFpdb.py:221 msgid "Lim_Blinds has no lookup for '%s'" msgstr "Lim_Blindsban nincs '%s'" -#: PokerStarsToFpdb.py:256 +#: PokerStarsToFpdb.py:273 msgid "failed to detect currency" msgstr "nem sikerült a pénznem meghatározása" -#: PokerStarsToFpdb.py:303 -msgid "readButton: not found" -msgstr "readButton: nem található" - -#: PokerStarsToFpdb.py:341 +#: PokerStarsToFpdb.py:358 msgid "reading antes" msgstr "antek olvasása" -#: Tables_Demo.py:64 +#: Stats.py:103 +msgid "exception getting stat %s for player %s %s" +msgstr "" + +#: Stats.py:104 +msgid "Stats.do_stat result = %s" +msgstr "" + +#: Stats.py:113 +#, fuzzy +msgid "error: %s" +msgstr "A hiba a következő: %s" + +#: Stats.py:132 Stats.py:133 +msgid "Total Profit" +msgstr "" + +#: Stats.py:154 Stats.py:161 +msgid "Voluntarily Put In Pot Pre-Flop%" +msgstr "" + +#: Stats.py:174 Stats.py:182 +msgid "Pre-Flop Raise %" +msgstr "" + +#: Stats.py:195 Stats.py:203 +msgid "% went to showdown" +msgstr "" + +#: Stats.py:216 Stats.py:224 +msgid "% won money at showdown" +msgstr "" + +#: Stats.py:237 Stats.py:246 +msgid "profit/100hands" +msgstr "" + +#: Stats.py:240 +msgid "exception calcing p/100: 100 * %d / %d" +msgstr "" + +#: Stats.py:259 Stats.py:268 +msgid "big blinds/100 hands" +msgstr "" + +#: Stats.py:281 Stats.py:290 +msgid "Big Bets/100 hands" +msgstr "" + +#: Stats.py:284 +msgid "exception calcing BB/100: " +msgstr "" + +#: Stats.py:304 Stats.py:315 +msgid "Flop Seen %" +msgstr "" + +#: Stats.py:338 Stats.py:346 +#, fuzzy +msgid "number hands seen" +msgstr "Leosztások száma:" + +#: Stats.py:359 Stats.py:367 +msgid "folded flop/4th" +msgstr "" + +#: Stats.py:380 +msgid "% steal attempted" +msgstr "" + +#: Stats.py:395 Stats.py:402 +msgid "% folded SB to steal" +msgstr "" + +#: Stats.py:414 Stats.py:421 +msgid "% folded BB to steal" +msgstr "" + +#: Stats.py:436 Stats.py:443 +msgid "% folded blind to steal" +msgstr "" + +#: Stats.py:455 Stats.py:462 +msgid "% 3/4 Bet preflop/3rd" +msgstr "" + +#: Stats.py:474 Stats.py:481 +msgid "% won$/saw flop/4th" +msgstr "" + +#: Stats.py:493 Stats.py:500 +msgid "Aggression Freq flop/4th" +msgstr "" + +#: Stats.py:512 Stats.py:519 +msgid "Aggression Freq turn/5th" +msgstr "" + +#: Stats.py:531 Stats.py:538 +msgid "Aggression Freq river/6th" +msgstr "" + +#: Stats.py:550 Stats.py:557 +msgid "Aggression Freq 7th" +msgstr "" + +#: Stats.py:576 Stats.py:583 +msgid "Post-Flop Aggression Freq" +msgstr "" + +#: Stats.py:604 Stats.py:611 +msgid "Aggression Freq" +msgstr "" + +#: Stats.py:630 Stats.py:637 +#, fuzzy +msgid "Aggression Factor" +msgstr "Session statisztikák" + +#: Stats.py:654 Stats.py:661 +msgid "% continuation bet " +msgstr "" + +#: Stats.py:673 Stats.py:680 +msgid "% continuation bet flop/4th" +msgstr "" + +#: Stats.py:692 Stats.py:699 +msgid "% continuation bet turn/5th" +msgstr "" + +#: Stats.py:711 Stats.py:718 +msgid "% continuation bet river/6th" +msgstr "" + +#: Stats.py:730 Stats.py:737 +msgid "% continuation bet 7th" +msgstr "" + +#: Stats.py:749 Stats.py:756 +msgid "% fold frequency flop/4th" +msgstr "" + +#: Stats.py:768 Stats.py:775 +msgid "% fold frequency turn/5th" +msgstr "" + +#: Stats.py:787 Stats.py:794 +msgid "% fold frequency river/6th" +msgstr "" + +#: Stats.py:806 Stats.py:813 +msgid "% fold frequency 7th" +msgstr "" + +#: Stats.py:833 +msgid "Example stats, player = %s hand = %s:" +msgstr "" + +#: Stats.py:866 +msgid "" +"\n" +"\n" +"Legal stats:" +msgstr "" + +#: Stats.py:867 +msgid "" +"(add _0 to name to display with 0 decimal places, _1 to display with 1, " +"etc)\n" +msgstr "" + +#: Tables.py:234 +msgid "Found unknown table = %s" +msgstr "" + +#: Tables.py:261 +msgid "attach to window" +msgstr "" + +#: Tables_Demo.py:72 msgid "Fake HUD Main Window" msgstr "Kamu HUD Főablak" -#: Tables_Demo.py:87 +#: Tables_Demo.py:95 msgid "enter table name to find: " msgstr "add meg a keresendő asztalnevet: " -#: Tables_Demo.py:112 +#: Tables_Demo.py:120 msgid "calling main" msgstr "main hívása" +#: TournamentTracker.py:50 +#, fuzzy +msgid "" +"Note: error output is being diverted to fpdb-error-log.txt and HUD-error." +"txt. Any major error will be reported there _only_." +msgstr "" +"\n" +"Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " +"fájlokba itt:\n" + +#: TournamentTracker.py:111 +msgid "tournament edit window=" +msgstr "" + +#: TournamentTracker.py:114 +msgid "FPDB Tournament Entry" +msgstr "" + +#: TournamentTracker.py:154 +#, fuzzy +msgid "Closing this window will stop the Tournament Tracker" +msgstr "Ezen ablak bezárása a HUD-ot is bezárja." + +#: TournamentTracker.py:156 +msgid "Enter Tournament" +msgstr "" + +#: TournamentTracker.py:161 +msgid "FPDB Tournament Tracker" +msgstr "" + +#: TournamentTracker.py:172 +msgid "Edit" +msgstr "" + +#: TournamentTracker.py:175 +msgid "Rebuy" +msgstr "" + +#: TournamentTracker.py:274 +msgid "db error: skipping " +msgstr "" + +#: TournamentTracker.py:276 +msgid "Database error %s in hand %d. Skipping.\n" +msgstr "" + +#: TournamentTracker.py:285 +msgid "could not find tournament: skipping" +msgstr "" + +#: TournamentTracker.py:286 +msgid "Could not find tournament %d in hand %d. Skipping.\n" +msgstr "" + +#: TournamentTracker.py:309 +#, fuzzy +msgid "table name %s not found, skipping.\n" +msgstr "HUD létrehozás: %s nevű asztal nincs meg, kihagyás." + +#: TournamentTracker.py:316 +msgid "tournament tracker starting\n" +msgstr "" + +#: TourneyFilters.py:61 +#, fuzzy +msgid "Tourney Type" +msgstr "Versenyek" + +#: TourneyFilters.py:88 +msgid "setting numTourneys:" +msgstr "" + +#: TourneySummary.py:136 +msgid "END TIME" +msgstr "" + +#: TourneySummary.py:137 +#, fuzzy +msgid "TOURNEY NAME" +msgstr "VERSENY MEGJEGYZÉS" + +#: TourneySummary.py:138 +#, fuzzy +msgid "TOURNEY NO" +msgstr "VERSENYAZONOSÍTÓ" + +#: TourneySummary.py:143 +#, fuzzy +msgid "CURRENCY" +msgstr "NEVEZÉSI DÍJ PÉNZNEME" + +#: TourneySummary.py:146 +msgid "ENTRIES" +msgstr "" + +#: TourneySummary.py:147 +msgid "SPEED" +msgstr "" + +#: TourneySummary.py:148 +msgid "PRIZE POOL" +msgstr "" + +#: TourneySummary.py:149 +msgid "STARTING CHIP COUNT" +msgstr "" + +#: TourneySummary.py:151 +#, fuzzy +msgid "REBUY" +msgstr "REBUY" + +#: TourneySummary.py:152 +#, fuzzy +msgid "ADDON" +msgstr "ADDON" + +#: TourneySummary.py:153 +msgid "KO" +msgstr "" + +#: TourneySummary.py:154 +#, fuzzy +msgid "MATRIX" +msgstr "MÁTRIX" + +#: TourneySummary.py:155 +msgid "MATRIX ID PROCESSED" +msgstr "" + +#: TourneySummary.py:156 +#, fuzzy +msgid "SHOOTOUT" +msgstr "SHOOTOUT" + +#: TourneySummary.py:157 +msgid "MATRIX MATCH ID" +msgstr "" + +#: TourneySummary.py:158 +#, fuzzy +msgid "SUB TOURNEY BUY IN" +msgstr "VERSENYTÍPUS AZONOSÍTÓ" + +#: TourneySummary.py:159 +#, fuzzy +msgid "SUB TOURNEY FEE" +msgstr "VERSENYAZONOSÍTÓ" + +#: TourneySummary.py:160 +#, fuzzy +msgid "REBUY CHIPS" +msgstr "KEZDŐ ZSETONOK" + +#: TourneySummary.py:161 +#, fuzzy +msgid "ADDON CHIPS" +msgstr "KEZDŐ ZSETONOK" + +#: TourneySummary.py:162 +msgid "REBUY COST" +msgstr "" + +#: TourneySummary.py:163 +msgid "ADDON COST" +msgstr "" + +#: TourneySummary.py:164 +#, fuzzy +msgid "TOTAL REBUYS" +msgstr "REBUY" + +#: TourneySummary.py:165 +#, fuzzy +msgid "TOTAL ADDONS" +msgstr "TELJES KASSZA" + +#: TourneySummary.py:168 +#, fuzzy +msgid "SNG" +msgstr "ÜLTETÉS" + +#: TourneySummary.py:169 +msgid "SATELLITE" +msgstr "" + +#: TourneySummary.py:170 +msgid "DOUBLE OR NOTHING" +msgstr "" + +#: TourneySummary.py:171 +msgid "GUARANTEE" +msgstr "" + +#: TourneySummary.py:172 +msgid "ADDED" +msgstr "" + +#: TourneySummary.py:173 +#, fuzzy +msgid "ADDED CURRENCY" +msgstr "NEVEZÉSI DÍJ PÉNZNEME" + +#: TourneySummary.py:174 +#, fuzzy +msgid "COMMENT" +msgstr "VERSENY MEGJEGYZÉS" + +#: TourneySummary.py:175 +msgid "COMMENT TIMESTAMP" +msgstr "" + +#: TourneySummary.py:178 +#, fuzzy +msgid "PLAYER IDS" +msgstr "JÁTÉKOSOK" + +#: TourneySummary.py:180 +#, fuzzy +msgid "TOURNEYS PLAYERS IDS" +msgstr "VERSENYJÁTÉKOS AZONOSÍTÓK" + +#: TourneySummary.py:181 +msgid "RANKS" +msgstr "" + +#: TourneySummary.py:182 +msgid "WINNINGS" +msgstr "" + +#: TourneySummary.py:183 +#, fuzzy +msgid "WINNINGS CURRENCY" +msgstr "NEVEZÉSI DÍJ PÉNZNEME" + +#: TourneySummary.py:184 +#, fuzzy +msgid "COUNT REBUYS" +msgstr "SZÁMOLT SZÉKEK" + +#: TourneySummary.py:185 +#, fuzzy +msgid "COUNT ADDONS" +msgstr "SZÁMOLT SZÉKEK" + +#: TourneySummary.py:186 +msgid "NB OF KO" +msgstr "" + +#: TourneySummary.py:233 +msgid "Tourney Insert/Update done" +msgstr "" + +#: TourneySummary.py:253 +msgid "addPlayer: rank:%s - name : '%s' - Winnings (%s)" +msgstr "" + +#: TourneySummary.py:280 +msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" +msgstr "" + #: WinTables.py:70 msgid "Window %s not found. Skipping." msgstr "A(z) %s nevű ablak nincs meg. Kihagyás." @@ -1671,11 +2489,11 @@ msgstr "A(z) %s nevű ablak nincs meg. Kihagyás." msgid "self.window doesn't exist? why?" msgstr "self.window nem létezik? miért?" -#: fpdb.pyw:46 +#: fpdb.pyw:48 msgid " - press return to continue\n" msgstr " - nyomj ENTER-t a folytatáshoz\n" -#: fpdb.pyw:53 +#: fpdb.pyw:55 msgid "" "\n" "python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" @@ -1684,11 +2502,11 @@ msgstr "" "Python 2.5 nincs meg, kérlek telepítsd a Python 2.5-öt, 2.6-ot, vagy 2.7-et " "az fpdb számára\n" -#: fpdb.pyw:54 fpdb.pyw:66 fpdb.pyw:88 +#: fpdb.pyw:56 fpdb.pyw:68 fpdb.pyw:90 msgid "Press ENTER to continue." msgstr "Nyomj ENTER-t a folytatáshoz." -#: fpdb.pyw:65 +#: fpdb.pyw:67 msgid "" "We appear to be running in Windows, but the Windows Python Extensions are " "not loading. Please install the PYWIN32 package from http://sourceforge.net/" @@ -1698,7 +2516,7 @@ msgstr "" "Bővítmények nem töltődnek be. Kérlek telepítsd a PYWIN32 csomagot innen: " "http://sourceforge.net/projects/pywin32/" -#: fpdb.pyw:87 +#: fpdb.pyw:89 msgid "" "Unable to load PYGTK modules required for GUI. Please install PyCairo, " "PyGObject, and PyGTK from www.pygtk.org." @@ -1706,7 +2524,7 @@ msgstr "" "Nem sikerült a GUI által igényelt PyGTK modulok betöltése. Kérlek telepítsd " "a PyCairo-t, a PyGObject-et és a PyGTK-t a www.pygtk.org címről." -#: fpdb.pyw:245 +#: fpdb.pyw:247 msgid "" "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, " "sqlcoder, Bostik, and others" @@ -1714,7 +2532,7 @@ msgstr "" "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, " "sqlcoder, Bostik, and others" -#: fpdb.pyw:246 +#: fpdb.pyw:248 msgid "" "You are free to change, and distribute original or changed versions of fpdb " "within the rules set out by the license" @@ -1722,31 +2540,31 @@ msgstr "" "Szabadon megváltoztathatod és terjesztheted az eredeti vagy már " "megváltoztatott fpdb verziókat a licenszben szabályozott feltételek mellett" -#: fpdb.pyw:247 +#: fpdb.pyw:249 msgid "Please see fpdb's start screen for license information" msgstr "Licensz információkért kérlek tekintsd meg az fpdb induló képernyőjét" -#: fpdb.pyw:251 +#: fpdb.pyw:253 msgid "and others" msgstr "és mások" -#: fpdb.pyw:257 +#: fpdb.pyw:259 msgid "Operating System" msgstr "Operációs rendszer" -#: fpdb.pyw:277 +#: fpdb.pyw:279 msgid "Your config file is: " msgstr "Konfigurációs fájl:" -#: fpdb.pyw:282 +#: fpdb.pyw:284 msgid "Version Information:" msgstr "Verzióinformáció:" -#: fpdb.pyw:289 +#: fpdb.pyw:291 msgid "Threads: " msgstr "Szálak:" -#: fpdb.pyw:312 +#: fpdb.pyw:314 msgid "" "Updated preferences have not been loaded because windows are open. Re-start " "fpdb to load them." @@ -1754,19 +2572,19 @@ msgstr "" "A megváltoztatott beállítások még nem léptek érvénybe, mert vannak nyitott " "ablakok. Indítsd újra az fpdb-t az érvénybe léptetésükhöz." -#: fpdb.pyw:322 +#: fpdb.pyw:324 msgid "Maintain Databases" msgstr "Adatbázisok karbantartása" -#: fpdb.pyw:332 +#: fpdb.pyw:334 msgid "saving updated db data" msgstr "frissített adatbázis adatok mentése" -#: fpdb.pyw:339 +#: fpdb.pyw:341 msgid "guidb response was " msgstr "a guidb válasza ez volt: " -#: fpdb.pyw:345 +#: fpdb.pyw:347 msgid "" "Cannot open Database Maintenance window because other windows have been " "opened. Re-start fpdb to use this option." @@ -1774,11 +2592,11 @@ msgstr "" "Nem tudom megnyitni az adatbázis karbantartó ablakot, mert más ablakok is " "nyitva vannak. Indítsd újra az fpdb-t ezen funkció használatához." -#: fpdb.pyw:348 +#: fpdb.pyw:350 msgid "Number of Hands: " msgstr "Leosztások száma:" -#: fpdb.pyw:349 +#: fpdb.pyw:351 msgid "" "\n" "Number of Tourneys: " @@ -1786,7 +2604,7 @@ msgstr "" "\n" "Versenyek száma: " -#: fpdb.pyw:350 +#: fpdb.pyw:352 msgid "" "\n" "Number of TourneyTypes: " @@ -1794,40 +2612,40 @@ msgstr "" "\n" "Versenytípusok száma: " -#: fpdb.pyw:351 +#: fpdb.pyw:353 msgid "Database Statistics" msgstr "Adatbázis statisztikák" -#: fpdb.pyw:360 +#: fpdb.pyw:362 msgid "HUD Configurator - choose category" msgstr "HUD beállító - válassz kategóriát" -#: fpdb.pyw:366 +#: fpdb.pyw:368 msgid "" "Please select the game category for which you want to configure HUD stats:" msgstr "Válassz játéktípust, amelyre vonatkozóan akarod beállítani a HUD-ot:" -#: fpdb.pyw:418 +#: fpdb.pyw:420 msgid "HUD Configurator - please choose your stats" msgstr "HUD beállító - válassz statisztikákat" -#: fpdb.pyw:424 +#: fpdb.pyw:426 msgid "Please choose the stats you wish to use in the below table." msgstr "Válaszd ki a lenti táblázatból a megjelenítendő statisztikákat." -#: fpdb.pyw:428 +#: fpdb.pyw:430 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" "Vedd figyelembe, hogy egy statisztikát nem választhatsz ki többször, " "különben ki fog lépni." -#: fpdb.pyw:432 +#: fpdb.pyw:434 msgid "" "It is not currently possible to select \"empty\" or anything else to that " "end." msgstr "Jelenleg nem lehetséges olyat választani, hogy \"üres\" vagy hasonló." -#: fpdb.pyw:436 +#: fpdb.pyw:438 msgid "" "To configure things like colouring you will still have to manually edit your " "HUD_config.xml." @@ -1835,11 +2653,11 @@ msgstr "" "Bizonyos dolgok, mint pl. a színezés beállításához egyelőre még kézzel kell " "szerkesztened a HUD_config.xml fájlt." -#: fpdb.pyw:543 +#: fpdb.pyw:545 msgid "Confirm deleting and recreating tables" msgstr "Erősítsd meg a táblák törlését és újra létrehozását" -#: fpdb.pyw:544 +#: fpdb.pyw:546 msgid "" "Please confirm that you want to (re-)create the tables. If there already are " "tables in the database " @@ -1847,7 +2665,7 @@ msgstr "" "Kérlek erősítsd meg, hogy valóban (újra) létre akarod hozni a táblákat. Ha " "már vannak táblák az adatbázisban (" -#: fpdb.pyw:545 +#: fpdb.pyw:547 msgid "" " they will be deleted.\n" "This may take a while." @@ -1855,72 +2673,72 @@ msgstr "" "), akkor azok törölve lesznek.\n" "Ja, és ez eltarthat egy darabig:)" -#: fpdb.pyw:570 +#: fpdb.pyw:572 msgid "User cancelled recreating tables" msgstr "A felhasználó mégsem generálja újra a táblákat." -#: fpdb.pyw:577 +#: fpdb.pyw:579 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod generálni a HUD gyorstárat." -#: fpdb.pyw:585 +#: fpdb.pyw:587 msgid " Hero's cache starts: " msgstr " Saját gyorstár innentől: " -#: fpdb.pyw:599 +#: fpdb.pyw:601 msgid " Villains' cache starts: " msgstr " Ellenfelek gyorstára innentől: " -#: fpdb.pyw:612 +#: fpdb.pyw:614 msgid " Rebuilding HUD Cache ... " msgstr " HUD gyorstár újraépítése ... " -#: fpdb.pyw:620 +#: fpdb.pyw:622 msgid "User cancelled rebuilding hud cache" msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." -#: fpdb.pyw:632 +#: fpdb.pyw:634 msgid "Confirm rebuilding database indexes" msgstr "Erősítsd meg az adatbázis indexeinek újraépítését" -#: fpdb.pyw:633 +#: fpdb.pyw:635 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod építeni az adatbázis indexeit." -#: fpdb.pyw:641 +#: fpdb.pyw:643 msgid " Rebuilding Indexes ... " msgstr " Indexek újraépítése ... " -#: fpdb.pyw:648 +#: fpdb.pyw:650 msgid " Cleaning Database ... " msgstr " Adatbázis tisztítása ... " -#: fpdb.pyw:653 +#: fpdb.pyw:655 msgid " Analyzing Database ... " msgstr " Adatbázis elemzése ... " -#: fpdb.pyw:658 +#: fpdb.pyw:660 msgid "User cancelled rebuilding db indexes" msgstr "A felhasználó megszakította az adatbázis indexeinek újraépítését." -#: fpdb.pyw:753 +#: fpdb.pyw:755 msgid "" "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" "Még nincs kész: Profil mentése (addig használd a HUD elrendezésének " "mentését, az jó)" -#: fpdb.pyw:756 +#: fpdb.pyw:758 msgid "Fatal Error - Config File Missing" msgstr "Végzetes hiba - Hiányzó konfigurációs fájl" -#: fpdb.pyw:758 +#: fpdb.pyw:760 msgid "Please copy the config file from the docs folder to:" msgstr "Kérlek másold át a konfigurációs fájlt a docs könyvtárból ide:" -#: fpdb.pyw:766 +#: fpdb.pyw:768 msgid "" "and edit it according to the install documentation at http://fpdb." "sourceforge.net" @@ -1928,167 +2746,167 @@ msgstr "" "majd szerkeszd a http://fpdb.sourceforge.net címen található telepítési " "útmutató szerint" -#: fpdb.pyw:823 +#: fpdb.pyw:825 msgid "_Main" msgstr "_Főmenü" -#: fpdb.pyw:824 fpdb.pyw:852 +#: fpdb.pyw:826 fpdb.pyw:854 msgid "_Quit" msgstr "_Kilépés" -#: fpdb.pyw:825 +#: fpdb.pyw:827 msgid "L" msgstr "L" -#: fpdb.pyw:825 +#: fpdb.pyw:827 msgid "_Load Profile (broken)" msgstr "Profil betö_ltése (hibás)" -#: fpdb.pyw:826 +#: fpdb.pyw:828 msgid "S" msgstr "S" -#: fpdb.pyw:826 +#: fpdb.pyw:828 msgid "_Save Profile (todo)" msgstr "Profil menté_se (todo)" -#: fpdb.pyw:827 +#: fpdb.pyw:829 msgid "F" msgstr "F" -#: fpdb.pyw:827 +#: fpdb.pyw:829 msgid "Pre_ferences" msgstr "_Beállítások" -#: fpdb.pyw:828 +#: fpdb.pyw:830 msgid "_Import" msgstr "_Importálás" -#: fpdb.pyw:829 +#: fpdb.pyw:831 msgid "_Set HandHistory Archive Directory" msgstr "Leo_sztástörténet archívumának könyvtára" -#: fpdb.pyw:830 +#: fpdb.pyw:832 msgid "B" msgstr "B" -#: fpdb.pyw:830 +#: fpdb.pyw:832 msgid "_Bulk Import" msgstr "_Tömeges importálás" -#: fpdb.pyw:831 +#: fpdb.pyw:833 msgid "I" msgstr "I" -#: fpdb.pyw:831 +#: fpdb.pyw:833 msgid "_Import through eMail/IMAP" msgstr "Email _import (IMAP)" -#: fpdb.pyw:832 +#: fpdb.pyw:834 msgid "_Viewers" msgstr "_Nézetek" -#: fpdb.pyw:833 +#: fpdb.pyw:835 msgid "A" msgstr "A" -#: fpdb.pyw:833 +#: fpdb.pyw:835 msgid "_Auto Import and HUD" msgstr "_AutoImport és HUD" -#: fpdb.pyw:834 +#: fpdb.pyw:836 msgid "H" msgstr "H" -#: fpdb.pyw:834 +#: fpdb.pyw:836 msgid "_HUD Configurator" msgstr "_HUD beállítása" -#: fpdb.pyw:835 +#: fpdb.pyw:837 msgid "G" msgstr "G" -#: fpdb.pyw:835 +#: fpdb.pyw:837 msgid "_Graphs" msgstr "_Grafikonok" -#: fpdb.pyw:836 +#: fpdb.pyw:838 msgid "P" msgstr "P" -#: fpdb.pyw:836 +#: fpdb.pyw:838 msgid "Ring _Player Stats (tabulated view)" msgstr "Kész_pénzes játékos statisztikák (táblázatos nézet)" -#: fpdb.pyw:837 +#: fpdb.pyw:839 msgid "T" msgstr "T" -#: fpdb.pyw:837 +#: fpdb.pyw:839 msgid "_Tourney Player Stats (tabulated view)" msgstr "Versenyjá_tékos statisztikák (táblázatos nézet)" -#: fpdb.pyw:838 +#: fpdb.pyw:840 msgid "Tourney _Viewer" msgstr "_Verseny nézet" -#: fpdb.pyw:839 +#: fpdb.pyw:841 msgid "O" msgstr "O" -#: fpdb.pyw:839 +#: fpdb.pyw:841 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "P_ozíciós statisztikák (táblázatos nézet, SQLite-tal nem megy)" -#: fpdb.pyw:840 fpdb.pyw:1057 +#: fpdb.pyw:842 fpdb.pyw:1059 msgid "Session Stats" msgstr "Session statisztikák" -#: fpdb.pyw:841 +#: fpdb.pyw:843 msgid "_Database" msgstr "A_datbázis" -#: fpdb.pyw:842 +#: fpdb.pyw:844 msgid "_Maintain Databases" msgstr "_Karbantartás" -#: fpdb.pyw:843 +#: fpdb.pyw:845 msgid "Create or Recreate _Tables" msgstr "_Táblák létrehozása vagy újragenerálása" -#: fpdb.pyw:844 +#: fpdb.pyw:846 msgid "Rebuild HUD Cache" msgstr "HUD gyorstár újraépítése" -#: fpdb.pyw:845 +#: fpdb.pyw:847 msgid "Rebuild DB Indexes" msgstr "Adatbázis indexek újraépítése" -#: fpdb.pyw:846 +#: fpdb.pyw:848 msgid "_Statistics" msgstr "_Statisztikák" -#: fpdb.pyw:847 +#: fpdb.pyw:849 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "Adatbázis exportálása textfájlba (SOKÁIG tart)" -#: fpdb.pyw:848 +#: fpdb.pyw:850 msgid "_Help" msgstr "_Súgó" -#: fpdb.pyw:849 +#: fpdb.pyw:851 msgid "_Log Messages" msgstr "Nap_lóbejegyzések" -#: fpdb.pyw:850 +#: fpdb.pyw:852 msgid "A_bout, License, Copying" msgstr "_Névjegy, licensz, másolás" -#: fpdb.pyw:868 +#: fpdb.pyw:870 msgid "There is an error in your config file\n" msgstr "Hiba van a konfigurációs fájlodban\n" -#: fpdb.pyw:869 +#: fpdb.pyw:871 msgid "" "\n" "\n" @@ -2098,15 +2916,15 @@ msgstr "" "\n" "A hiba a következő: " -#: fpdb.pyw:870 +#: fpdb.pyw:872 msgid "CONFIG FILE ERROR" msgstr "KONFIGURÁCIÓS FÁJL HIBA" -#: fpdb.pyw:876 +#: fpdb.pyw:878 msgid "Config file" msgstr "Konfigurációs fájl" -#: fpdb.pyw:877 +#: fpdb.pyw:879 msgid "" "has been created at:\n" "%s.\n" @@ -2114,50 +2932,50 @@ msgstr "" "létrehozva itt:\n" "%s.\n" -#: fpdb.pyw:878 +#: fpdb.pyw:880 msgid "Edit your screen_name and hand history path in the supported_sites " msgstr "" "Állítsd be az asztalnál látható nevedet és a leosztástörténetek helyét a " "támogatott termek" -#: fpdb.pyw:879 +#: fpdb.pyw:881 msgid "" "section of the Preferences window (Main menu) before trying to import hands." msgstr "" "résznél a Beállítások ablakban (Főmenü) mielőtt megpróbálnál leosztásokat " "importálni." -#: fpdb.pyw:902 +#: fpdb.pyw:904 msgid "Connected to SQLite: %(database)s" msgstr "Kapcsolódva a %(database)s SQLite adatbázishoz" -#: fpdb.pyw:906 +#: fpdb.pyw:908 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " "- " -#: fpdb.pyw:907 +#: fpdb.pyw:909 msgid "Please check that the MySQL service has been started" msgstr "Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" -#: fpdb.pyw:911 +#: fpdb.pyw:913 msgid "Postgres client reports: Unable to connect - " msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " -#: fpdb.pyw:912 +#: fpdb.pyw:914 msgid "Please check that the Postgres service has been started" msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" -#: fpdb.pyw:936 +#: fpdb.pyw:938 msgid "Strong Warning - Invalid database version" msgstr "Nyomatékos figyelmeztetés - Érvénytelen adatbázis verzió" -#: fpdb.pyw:938 +#: fpdb.pyw:940 msgid "An invalid DB version or missing tables have been detected." msgstr "Érvénytelen adatbázis verziót vagy hiányzó táblá(ka)t találtam." -#: fpdb.pyw:942 +#: fpdb.pyw:944 msgid "" "This error is not necessarily fatal but it is strongly recommended that you " "recreate the tables by using the Database menu." @@ -2165,7 +2983,7 @@ msgstr "" "Ez a hiba nem feltétlenül végzetes, de erősen javasolt a táblák " "újragenerálása az Adatbázis menü használatával." -#: fpdb.pyw:946 +#: fpdb.pyw:948 msgid "" "Not doing this will likely lead to misbehaviour including fpdb crashes, " "corrupt data etc." @@ -2174,13 +2992,13 @@ msgstr "" "kiléphet, tönkretehet adatokat, stb." # FIXME: would need a different word ordering in Hungarian -#: fpdb.pyw:959 +#: fpdb.pyw:961 msgid "Status: Connected to %s database named %s on host %s" msgstr "" "Állapot: Kapcsolódva a(z) %s adatbázis-kezelő %s nevű adatbázisához a(z) %s " "kiszolgálón" -#: fpdb.pyw:969 +#: fpdb.pyw:971 msgid "" "\n" "Global lock taken by" @@ -2188,7 +3006,7 @@ msgstr "" "\n" "Globális zárolást végzett:" -#: fpdb.pyw:972 +#: fpdb.pyw:974 msgid "" "\n" "Failed to get global lock, it is currently held by" @@ -2196,43 +3014,43 @@ msgstr "" "\n" "Globális zárolás meghiúsult, jelenleg már zárolta:" -#: fpdb.pyw:982 +#: fpdb.pyw:984 msgid "Quitting normally" msgstr "Normál kilépés" -#: fpdb.pyw:1006 +#: fpdb.pyw:1008 msgid "Global lock released.\n" msgstr "Globális zárolás feloldva.\n" -#: fpdb.pyw:1013 +#: fpdb.pyw:1015 msgid "Auto Import" msgstr "AutoImport" -#: fpdb.pyw:1020 +#: fpdb.pyw:1022 msgid "Bulk Import" msgstr "Tömeges import" -#: fpdb.pyw:1026 +#: fpdb.pyw:1028 msgid "eMail Import" msgstr "Email import" -#: fpdb.pyw:1033 +#: fpdb.pyw:1035 msgid "Ring Player Stats" msgstr "Készpénzes statisztikák" -#: fpdb.pyw:1039 +#: fpdb.pyw:1041 msgid "Tourney Player Stats" msgstr "Versenystatisztikák" -#: fpdb.pyw:1045 +#: fpdb.pyw:1047 msgid "Tourney Viewer" msgstr "Verseny nézet" -#: fpdb.pyw:1051 +#: fpdb.pyw:1053 msgid "Positional Stats" msgstr "Pozíciós statisztikák" -#: fpdb.pyw:1061 +#: fpdb.pyw:1063 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in " @@ -2290,18 +3108,18 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" -"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " +"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." -#: fpdb.pyw:1078 +#: fpdb.pyw:1080 msgid "Help" msgstr "Súgó" -#: fpdb.pyw:1085 +#: fpdb.pyw:1087 msgid "Graphs" msgstr "Grafikonok" -#: fpdb.pyw:1135 +#: fpdb.pyw:1137 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " @@ -2311,15 +3129,15 @@ msgstr "" "Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " "fájlokba itt:\n" -#: fpdb.pyw:1164 +#: fpdb.pyw:1166 msgid "fpdb starting ..." msgstr "fpdb indítása ..." -#: fpdb.pyw:1213 +#: fpdb.pyw:1215 msgid "FPDB WARNING" msgstr "FPDB FIGYELMEZTETÉS" -#: fpdb.pyw:1232 +#: fpdb.pyw:1234 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" @@ -2330,7 +3148,7 @@ msgstr "" " Kattints az IGEN gombra a könyvtár létrehozásához, vagy a NEM gombra egy " "másik könyvtár választásához." -#: fpdb.pyw:1240 +#: fpdb.pyw:1242 msgid "" "WARNING: Unable to create hand output directory. Importing is not likely to " "work until this is fixed." @@ -2338,10 +3156,115 @@ msgstr "" "FIGYELEM: Nem sikerült a leosztásarchívum könyvtárának létrehozása. Az " "importálás valószínűleg nem fog működni." -#: fpdb.pyw:1245 +#: fpdb.pyw:1247 msgid "Select HH Output Directory" msgstr "Válaszd ki a leosztásarchívum könyvtárát" +#: fpdb_import.py:60 +msgid "Import database module: MySQLdb not found" +msgstr "" + +#: fpdb_import.py:67 +msgid "Import database module: psycopg2 not found" +msgstr "" + +#: fpdb_import.py:178 +msgid "Database ID for %s not found" +msgstr "" + +#: fpdb_import.py:180 +msgid "" +"[ERROR] More than 1 Database ID found for %s - Multiple currencies not " +"implemented yet" +msgstr "" + +#: fpdb_import.py:216 +msgid "Attempted to add non-directory: '%s' as an import directory" +msgstr "" + +#: fpdb_import.py:226 +msgid "Started at %s -- %d files to import. indexes: %s" +msgstr "" + +#: fpdb_import.py:235 +msgid "No need to drop indexes." +msgstr "" + +#: fpdb_import.py:254 +msgid "writers finished already" +msgstr "" + +#: fpdb_import.py:257 +msgid "waiting for writers to finish ..." +msgstr "" + +#: fpdb_import.py:267 +msgid " ... writers finished" +msgstr "" + +#: fpdb_import.py:273 +#, fuzzy +msgid "No need to rebuild indexes." +msgstr "A felhasználó megszakította az adatbázis indexeinek újraépítését." + +#: fpdb_import.py:277 +#, fuzzy +msgid "No need to rebuild hudcache." +msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." + +#: fpdb_import.py:302 +msgid "sending finish msg qlen =" +msgstr "" + +#: fpdb_import.py:428 fpdb_import.py:430 +#, fuzzy +msgid "Converting " +msgstr "Hiba a(z) '%s' konvertálása közben" + +#: fpdb_import.py:466 +msgid "Hand processed but empty" +msgstr "" + +#: fpdb_import.py:479 +msgid "fpdb_import: sending hand to hud" +msgstr "" + +#: fpdb_import.py:482 +msgid "Failed to send hand to HUD: %s" +msgstr "" + +#: fpdb_import.py:493 +msgid "Unknown filter filter_name:'%s' in filter:'%s'" +msgstr "" + +#: fpdb_import.py:504 +msgid "" +"Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge." +"net so we can fix the problem." +msgstr "" + +#: fpdb_import.py:505 +msgid "Filename:" +msgstr "" + +#: fpdb_import.py:506 +msgid "" +"Here is the first line of the hand so you can identify it. Please mention " +"that the error was a ValueError:" +msgstr "" + +#: fpdb_import.py:508 +msgid "Hand logged to hand-errors.txt" +msgstr "" + +#: fpdb_import.py:516 +msgid "CLI for fpdb_import is now available as CliFpdb.py" +msgstr "" + +#: interlocks.py:49 +msgid "lock already held by:" +msgstr "" + #: test_Database.py:50 msgid "DEBUG: Testing variance function" msgstr "DEBUG: Varianciafügvény tesztelésa" @@ -2351,7 +3274,7 @@ msgid "DEBUG: result: %s expecting: 0.666666 (result-expecting ~= 0.0): %s" msgstr "" "DEBUG: eredmény: %s várt érték: 0.666666. (eredmény - várt érték ~= 0.0): %s" -#: windows_make_bats.py:31 +#: windows_make_bats.py:39 msgid "" "\n" "This script is only for windows\n" @@ -2359,7 +3282,7 @@ msgstr "" "\n" "Ez a szkript csak windowson használható\n" -#: windows_make_bats.py:58 +#: windows_make_bats.py:66 msgid "" "\n" "no gtk directories found in your path - install gtk or edit the path " diff --git a/pyfpdb/locale/update-po-files.sh b/pyfpdb/locale/update-po-files.sh new file mode 100755 index 00000000..cf0d0e81 --- /dev/null +++ b/pyfpdb/locale/update-po-files.sh @@ -0,0 +1,2 @@ +msgmerge --update fpdb-hu_HU.po fpdb-en_GB.po + From 32d24b147ec9609cec792a6b99f8799e1c2bc2c7 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 20:32:17 +0200 Subject: [PATCH 157/641] update hungarian mo file --- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 45664 -> 45677 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index 273fe9abd185d8eea3b3e189666c0dae4c9b03ca..3d96804b9a9558ca0a27cc7c15bd773086008922 100644 GIT binary patch delta 4097 zcmXZe4^-CG9mnyD#Xm(J`TtJ}5y3zb{}3co{5KTEjO8fp*aL`Znkb4k()qDPcA7D&MxiJaGm{%)|nSgKMIQ$ppVN#_r594E)he?bPZ*Db zSdKBv?0TCpins~Wu@kkOb%9|7CL}R;JC9F zlZg8<9KXgO9Qw2|VHklScprvhhI0aHor0%5W0Dz^F`)<4qT*dR3SVRbZjVKo8uEW3d&p@d8HU7nqKL&rntz z=bY($0`(J|EFq}c|YGYz?7LLFrsEVw1^B#s0 zx1cI;6nTc}#u=FWEM-T(bCq+WbDOi#*<$rfyPG)a{JHaj^D+jp@JFab`*9e4j;h=p zoQZL3jJX$=pf=#gxwy{F{{nM~&!H0i4@S^`<}QOFOhi=M2Sq!RPz$DFIA)+q{1B?! zi%_5Y-Fy`eC$4pI11iz|7>;eIrh5aG;3aJ4`Q~E=YN9o3ZBy(+o%LB4U%~mrcd-!X zb8vc%8ZieiVi69wcxnv|NnDMzk7>t4IF!avQ+J>$cM&~hbe+M2_zmiH%HCkRv>1bl zSK=64hjG|~Q}7f{!oTApOs=I$xE@3BFsf1=sCC}LaO_2`bETI0k6`dmCVq&6s0-*N zE(3WEwa^!+#O`1O#%!`X%fLY5Ce(vkP@lhvO6+aqN-$sIRDAL|TbWkWhTeOQ`p;%? zi-~!d_dRuTC?3vHTXyRh$Q0r}6g^FJL~((^W<6_`d`hdQ!0 z^xn_OIvO7tkE zU=Ql^tEkF*e__BIWNu*%`Wx(f{#$1sE@u8yoQZ|o?Q7M5>h5<@3;qFh_SY~IhwiXf za4zc1XJQ_fq7vF|^-LRsiA;3kQv55%_G6gd|AOz^iMgnz>%_@;6$5eDF1tVk1{04&&8J}qX5zPT z5|&{d`tbt{!<^mr#+-`U*rTWoJR^C&sbf%zyHTa;!_oK;oP*&%unCmmKH>_D!rQ0^ z1UK4*qEQb>#1Nc>5%?{P#7CSJsOQw8*UVr$11%Kyk}X*pD$YVRNj}D4F(#qkxfvfK zK8Pym`>2g%?%`&`EqD)(*lXXKXjGhl<1l$I^;fCqF`+Z|a42?T9G=5$yo##Cy<8GX zqy%;Lm8jl%!P$kXz;z78LFCFXK~45|#TL}}`%%w}+(-SR7!*-gxdeS!jYDv&vmVv8 zJ5Wc{ic0(}4#Qg*gx@#=_uG3V42zgAMfJ`h)CP_sFP!Fn=T6Vy^)xJrI?1RolTfZ+=INfp83d4 z44_JxaM+f548{^q!9*;@0(=&AG{;b9d;-<&J*e06oQr#LIPqoF(ez%mF8*1S*&hu{meN-aXP#gIYlhM~^H;|2q z#NR%At7EC^3%oBJRmGEs$!9jcglaKO)7Uy6MzJsb% zZo56&LJTKf)K2}Cz%nLuMjKE&d>(bB?nD~Zyoc)EWv|+QBU+J0H(y~Y?&+}2+lBLp z&*Kan)@d)O1*j(7f!cWs>H<35>Di3_%*0kEZeusD|B1~o{WTUN&PDBP0M#QYuiG0f z3weW04vxZiP)++O7T_T2sPd25`4ZFymthdD_1wfJ)DbjbFdjgi?JKCvPhd2j#gX_s z)WZKpmG++FHsRr@1V>^LW?%@;Lfxn(I3BA|N8r88K&9=#Q2ZFP@jCi3;-_}O8dT<6 zP|dgti}4~VQQrx>a582QFTgac!~ZucszPUQE`EqS*E7i{?ZS`Y96s=)GJYMyunTp@ zXHoC(C#Y_|gJUu74V&O}ypMQ3>g-pc9()pY=I1d6`%sm*iRpU(Lr>YOGY3=nU@LCG zBN&cRZ`xljsi@4Cpcd#rCGacM&Tcq^x@>}DQAbdOKCE={dQ2zYi

=dl-zt_|x`- zX{dO)vk^xVpGH0C_oyEE3bpWEEJWWK`{0G$yYK&CdT?IK#GENP`OW3!`@>2qs#k2R RSh0Lc%F2!1H_O+S{ts`#awGr% delta 4084 zcmXZe3sBZo8prVyDtBK%#0v%@AR+`Ih=!;rk#`zpRBBxn@j|wQBA{zJ{4LbPutE$g zO(QSSRfr6CoGIIjyKY5AX|>ZmwP@X#9H-SLtM9LKW*k4~Iq%E)Kj%5m`NRLt`+afV zukC{{ulfdK;!2DeYK(bwnK5JV7~X_m;&}9x8k2+5FdDaD7Vg90_zn)iUM#`D<#xT* z7)e}*Nw^oa&TE*8SC<>l$ujXwMy z{qZ`6V&7FHgAo{n(auEFI_axCV`3Q0WI_)pL&ckL1U~M*c+$Vk{=yWh;>HG0+cIU@|sf8Xm`i_%$ZsRgA*ntF772*{JU= z!!TTr>u@`c#cQaIrQdD8myb({i*YS_oecUjNdA*CgK!*%Vd%3Z>I48Di+ z#zNEvif{%lck?e`HgP*D(Qhz<{xg>u_%YG9!agX#=|e3Tg+7c%m3TC&+jCH#7rFUj z>`z?g;u=(<+t7!NsHS@gmEcKi;`!z+25O>`HMS|XqRzU_#iwyL@ny`z$sC-nQ7vZR z37m#KF3zYlCX;v>(l%xfK8Dv(P2Eg`sB$OJQ%2_)q~i~$>l9aIyL2K35HG@!xEu## zJx;(D%)(D_K89BtGYVH?Anrm{su{J;G4x?4YMs;7)IXfTXG}bdy*LIvUIwxqwb0k7 z#4ce32Cla|i^hJ$b*Kl`qdtEcmDnrDtH6AVlkoNpwlWQ<4ZXgB`WG;`z{D&}`LjKO z8XQF2g1LAC)nr#tXFh(Ty-pLI^DvG1RmeZHhyQeBzI$y#f51fIa@3JEVi^9_W1utX zMm_KfY6l^kY#f7=+2UB#1FE*r;n;$6uou;I6YsM}HVf6=t6f};1Bsh34qH*5pFvgL z`+xyA$XvimEV|#`^S?X0@J{AG!hFoEv)8Hy)!nb57W_Br?9XBfUdK>O-fGW08^;qD zpc2|_^-Lp!OeT)vV*D6~;P`F!jW`!|mK#wId=XW;zhE?;L3Q(ayaoNX+lu6(-WxMf z3C=~@z%0T=*o~pO|LG6diCi4R2YYcWp22?j3u=MBJ8Tz+q2>ppnllD(!z5gY<+v38 zhN?h9y?tY5pf+|ZY6E|iJl~Wvn1`ED*P{y)@Kc_nd8B`_yk4hwumxa!L z0jhV_IuD^rd=7)K7kOovYgmeF9i zm3SM5;05%@ADmaQfcRIOh6THA?>vawKofG|%(ET?U8~e4+e8(ZLi`G*;^(LZLiQNL ztHBiETznhnW9*~0GF4bed=h74P_zBH1*nSb$80=~OYpy#gWjyY{32nn6}9s|kJ;vk zME#`_k8wB^$6_g_<6hL!oW=;ef@(Vd$L;sRa42yBCgKuj9mW&4BG=Y4Z@P&dR4GHB zu%#Y?gNV~G8VfKNm!ghlAL@(`pdQ?cx&`en?!^AYr%*@Jg+uTxY6IV6l1k<0-vK2=)nPa*~R_#+k||mLGG|jkyDNp%T7`aoCHaG5jh1g2oA0iLat6mE2;FHWPis z(_5&&5?IKD&S({ChxedfsT+|-HLs((cj43acSHly=;k|&$1R6!^B%%k#2q*lf5CA$ z<*;qi4XB;hqh3IV4|_JF_n4?<;v#n7$|E+zp-0(0aWZOWJ*Xaue8#@fVv!qc5^w~* zifY=AFc*7KN0r)Y=krh-T!{Wy>bZ&4s3WMs0NjB(+ec8>>i`bKHoOu4fm--0RB3-i zmDD_I6AZ&)gwYs?<4|wZJiHl;QQ!9-V4%`AV-UWDX?PBoV&CWNf-6v&uR%5ACY*^U zP>K3IZx;^7RN^U^h~=n68&MTHf-~@+$aDGo?*+T?G@Q-{MW~FQz)(DdI^#Cf{e2(R z&6hA4gI}}>W??MxWYpO&Mm_i->dZSZ3cFC1IFCuX|35P*WFp}u+r^bwMZ6nTBL8Fd zFPA7(=7p#Qno$Y7gxcAM&TFUyhqc)w$iXn;1ukBRNyPVIsovqO3`Sx|yZvAcD!#*6 yiwVSsQ4jhTsz<& Date: Tue, 17 Aug 2010 20:56:36 +0200 Subject: [PATCH 158/641] ebuilds: change spaces to tabs as required by repoman --- packaging/gentoo/current_stable.ebuild | 56 ++++++++++++------------ packaging/gentoo/current_testing.ebuild | 56 ++++++++++++------------ packaging/gentoo/fpdb-9999.ebuild | 58 ++++++++++++------------- 3 files changed, 85 insertions(+), 85 deletions(-) diff --git a/packaging/gentoo/current_stable.ebuild b/packaging/gentoo/current_stable.ebuild index 232c82b2..6b7d7b90 100644 --- a/packaging/gentoo/current_stable.ebuild +++ b/packaging/gentoo/current_stable.ebuild @@ -19,42 +19,42 @@ KEYWORDS="~amd64 ~x86" IUSE="graph mysql postgres sqlite" RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" DEPEND="${RDEPEND}" src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb - doins readme.txt + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb + doins readme.txt - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs } pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." } diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index c238e9a3..8b09ea9c 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -19,42 +19,42 @@ KEYWORDS="~amd64 ~x86" IUSE="graph mysql postgres sqlite" RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" DEPEND="${RDEPEND}" src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb - doins readme.txt + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb + doins readme.txt - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs } pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." } diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index 9e5acded..19d3bd28 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -20,46 +20,46 @@ KEYWORDS="~amd64 ~x86" IUSE="graph mysql postgres sqlite" RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" DEPEND="${RDEPEND}" src_unpack() { - git_src_unpack + git_src_unpack } src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb - doins readme.txt + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb + doins readme.txt - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs } pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." } From 4a457b7ab16bfac9ae49266195a0b9651ab3f2bf Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 20:59:51 +0200 Subject: [PATCH 159/641] ebuild: move EAPI declaration to beginning as required by repoman --- packaging/gentoo/current_stable.ebuild | 2 +- packaging/gentoo/current_testing.ebuild | 2 +- packaging/gentoo/fpdb-9999.ebuild | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packaging/gentoo/current_stable.ebuild b/packaging/gentoo/current_stable.ebuild index 6b7d7b90..69d5c7b0 100644 --- a/packaging/gentoo/current_stable.ebuild +++ b/packaging/gentoo/current_stable.ebuild @@ -1,11 +1,11 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # created by Steffen Schaumburg, steffen@schaumburger.info +EAPI="2" inherit eutils inherit games -EAPI="2" NEED_PYTHON=2.5 DESCRIPTION="A free/open source tracker/HUD for use with online poker" diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index 8b09ea9c..f4338fce 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -1,11 +1,11 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # created by Steffen Schaumburg, steffen@schaumburger.info +EAPI="2" inherit eutils inherit games -EAPI="2" NEED_PYTHON=2.5 DESCRIPTION="A free/open source tracker/HUD for use with online poker" diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index 19d3bd28..065e0b4c 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -1,12 +1,12 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # created by Steffen Schaumburg, steffen@schaumburger.info +EAPI="2" inherit eutils inherit games inherit git -EAPI="2" NEED_PYTHON=2.5 DESCRIPTION="A free/open source tracker/HUD for use with online poker" From 81d3f40b5be7e19d9ee70c811ba29cf13fe99d62 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 21:07:33 +0200 Subject: [PATCH 160/641] ebuild: add metadata.xml, add Manifest to version tracking --- packaging/gentoo/Manifest | 6 ++++++ packaging/gentoo/metadata.xml | 15 +++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 packaging/gentoo/Manifest create mode 100644 packaging/gentoo/metadata.xml diff --git a/packaging/gentoo/Manifest b/packaging/gentoo/Manifest new file mode 100644 index 00000000..df6d00f4 --- /dev/null +++ b/packaging/gentoo/Manifest @@ -0,0 +1,6 @@ +DIST fpdb-0.20.1.tar.bz2 662807 RMD160 b5f22a684c605ddbba7d2154005a822b02a19490 SHA1 e4cc40de5849d3ae33a680d917b340ab37c6448b SHA256 46eff0625f300c070ce88c519ae6019f6e1c98a7725733c5e16b50a058247fe3 +DIST fpdb-0.20.904.tar.bz2 632871 RMD160 6af83a9b30e8b3f394b011a4dc92937f130b9e15 SHA1 083c51f1627f901e24801bf6abebf1d07646bd89 SHA256 5e72055fe7ebb0c6048282f8edc972ee01be21063d6f8071abef22111f3e82f9 +EBUILD fpdb-0.20.1.ebuild 1553 RMD160 24e8aa18cf2b936db23994e5c26a06692d6ebe5b SHA1 05906bea1edbb6e71a95a044fcfe849fe75a737c SHA256 d8850dc2368543062a57b0928cf9fad3d907881e904bf879f904f40e6a734b73 +EBUILD fpdb-0.20.904.ebuild 1557 RMD160 0a45c3d11cd0e5feff055324042476131ccd4285 SHA1 ce8e12fc4458a17b36ccaf3a3fee726c7e6d6751 SHA256 5e8bc7675c9e52fb89f05980f36a60f9ce0f0ef5e700286d8dd1936fbcef3f41 +EBUILD fpdb-9999.ebuild 1591 RMD160 29cd89e09ef4935a19d72bb2b1958658aa37170e SHA1 5d70a03ce14bb4bc70ebc60a6c09ef9d9519e1dc SHA256 390999733acbabd44f28c046b99c53ba2db01e441caa16c00203a81f18383333 +MISC metadata.xml 547 RMD160 3f6ca7b0d6eba60a05ef68b080a2cc73f11edcfc SHA1 cee8c2763094e28d6df20b1cf693d98b4a22bf1c SHA256 a9f0e5034bce25dfd9f0d75f0569f870b0320d73dd3e264049c49b543e9e91b0 diff --git a/packaging/gentoo/metadata.xml b/packaging/gentoo/metadata.xml new file mode 100644 index 00000000..7aa0ff64 --- /dev/null +++ b/packaging/gentoo/metadata.xml @@ -0,0 +1,15 @@ + + + + + OpenOffice is the opensource version of staroffice. + This ebuild allows you to compile it yourself. Unfortunately this + compilation can take up to a day depending on the speed of your + computer. It will however make a snappier openoffice than the binary + version. + + + Enable dependencies for making graphs + + + From 4e83734703fb49ecf69b9bbd1ea228ec962824c7 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 21:15:22 +0200 Subject: [PATCH 161/641] remove keywords from live ebuild as required by gentoo policy --- packaging/gentoo/Manifest | 2 +- packaging/gentoo/fpdb-9999.ebuild | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/gentoo/Manifest b/packaging/gentoo/Manifest index df6d00f4..17b4aabd 100644 --- a/packaging/gentoo/Manifest +++ b/packaging/gentoo/Manifest @@ -2,5 +2,5 @@ DIST fpdb-0.20.1.tar.bz2 662807 RMD160 b5f22a684c605ddbba7d2154005a822b02a19490 DIST fpdb-0.20.904.tar.bz2 632871 RMD160 6af83a9b30e8b3f394b011a4dc92937f130b9e15 SHA1 083c51f1627f901e24801bf6abebf1d07646bd89 SHA256 5e72055fe7ebb0c6048282f8edc972ee01be21063d6f8071abef22111f3e82f9 EBUILD fpdb-0.20.1.ebuild 1553 RMD160 24e8aa18cf2b936db23994e5c26a06692d6ebe5b SHA1 05906bea1edbb6e71a95a044fcfe849fe75a737c SHA256 d8850dc2368543062a57b0928cf9fad3d907881e904bf879f904f40e6a734b73 EBUILD fpdb-0.20.904.ebuild 1557 RMD160 0a45c3d11cd0e5feff055324042476131ccd4285 SHA1 ce8e12fc4458a17b36ccaf3a3fee726c7e6d6751 SHA256 5e8bc7675c9e52fb89f05980f36a60f9ce0f0ef5e700286d8dd1936fbcef3f41 -EBUILD fpdb-9999.ebuild 1591 RMD160 29cd89e09ef4935a19d72bb2b1958658aa37170e SHA1 5d70a03ce14bb4bc70ebc60a6c09ef9d9519e1dc SHA256 390999733acbabd44f28c046b99c53ba2db01e441caa16c00203a81f18383333 +EBUILD fpdb-9999.ebuild 1580 RMD160 91fbc789bef8f2e534cb15f70b498300579df1ae SHA1 08e4c2bb6c82e6d8dd5a84ce9a37f11105836b9e SHA256 8412055bfa358b6bcc5aa6fad13e9aa43244a478d1164de672ac53fdf4e27830 MISC metadata.xml 547 RMD160 3f6ca7b0d6eba60a05ef68b080a2cc73f11edcfc SHA1 cee8c2763094e28d6df20b1cf693d98b4a22bf1c SHA256 a9f0e5034bce25dfd9f0d75f0569f870b0320d73dd3e264049c49b543e9e91b0 diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index 065e0b4c..b2eaa48b 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -15,7 +15,7 @@ EGIT_REPO_URI="git://git.assembla.com/fpdb.git" LICENSE="AGPL-3" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="" #note: this should work on other architectures too, please send me your experiences IUSE="graph mysql postgres sqlite" From 88570e5c66829fed106a1ea633e60c58e1ee6ba4 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 21:24:52 +0200 Subject: [PATCH 162/641] ebuild: add ChangeLog and readme for deps, update metadata description, updated manifest --- packaging/gentoo/ChangeLog | 10 ++++++++++ packaging/gentoo/Manifest | 1 + packaging/gentoo/dev-readme.txt | 16 ++++++++++++++++ packaging/gentoo/metadata.xml | 6 +----- 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 packaging/gentoo/ChangeLog create mode 100644 packaging/gentoo/dev-readme.txt diff --git a/packaging/gentoo/ChangeLog b/packaging/gentoo/ChangeLog new file mode 100644 index 00000000..1100d61e --- /dev/null +++ b/packaging/gentoo/ChangeLog @@ -0,0 +1,10 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# created by Steffen Schaumburg, steffen@schaumburger.info + +*fpdb-0.20.1 fpdb-0.20.904 fpdb-9999 (17 Aug 2010) + + 17 Aug 2010; Steffen Schaumburg + +fpdb-0.20.1.ebuild, +fpdb-0.20.904.ebuild, +fpdb-9999.ebuild, +metadata.xml: + Initial changelogged commit, this ebuild was created by ferki and I made some changes to comply with repoman. + diff --git a/packaging/gentoo/Manifest b/packaging/gentoo/Manifest index 17b4aabd..83b320f0 100644 --- a/packaging/gentoo/Manifest +++ b/packaging/gentoo/Manifest @@ -3,4 +3,5 @@ DIST fpdb-0.20.904.tar.bz2 632871 RMD160 6af83a9b30e8b3f394b011a4dc92937f130b9e1 EBUILD fpdb-0.20.1.ebuild 1553 RMD160 24e8aa18cf2b936db23994e5c26a06692d6ebe5b SHA1 05906bea1edbb6e71a95a044fcfe849fe75a737c SHA256 d8850dc2368543062a57b0928cf9fad3d907881e904bf879f904f40e6a734b73 EBUILD fpdb-0.20.904.ebuild 1557 RMD160 0a45c3d11cd0e5feff055324042476131ccd4285 SHA1 ce8e12fc4458a17b36ccaf3a3fee726c7e6d6751 SHA256 5e8bc7675c9e52fb89f05980f36a60f9ce0f0ef5e700286d8dd1936fbcef3f41 EBUILD fpdb-9999.ebuild 1580 RMD160 91fbc789bef8f2e534cb15f70b498300579df1ae SHA1 08e4c2bb6c82e6d8dd5a84ce9a37f11105836b9e SHA256 8412055bfa358b6bcc5aa6fad13e9aa43244a478d1164de672ac53fdf4e27830 +MISC ChangeLog 474 RMD160 0068d0dd611d3deab35899b5af689d8f5e81546f SHA1 cd473e96d2e57b813cf7d85f0f30c30b9486110e SHA256 50d110c80c42d6f127b32a8edb61dd655c481cbb2d6ec60e557afe3388c6cb48 MISC metadata.xml 547 RMD160 3f6ca7b0d6eba60a05ef68b080a2cc73f11edcfc SHA1 cee8c2763094e28d6df20b1cf693d98b4a22bf1c SHA256 a9f0e5034bce25dfd9f0d75f0569f870b0320d73dd3e264049c49b543e9e91b0 diff --git a/packaging/gentoo/dev-readme.txt b/packaging/gentoo/dev-readme.txt new file mode 100644 index 00000000..3ca779d2 --- /dev/null +++ b/packaging/gentoo/dev-readme.txt @@ -0,0 +1,16 @@ +Repoman currently gives the following errors for our ebuilds: + ebuild.allmasked: This error can be ignored + changelog.missing 1 + games-util/fpdb/ChangeLog + LIVEVCS.unmasked 1 + games-util/fpdb/fpdb-9999.ebuild + ebuild.badheader 3 + games-util/fpdb/fpdb-0.20.1.ebuild: Malformed CVS Header on line: 3 + games-util/fpdb/fpdb-0.20.904.ebuild: Malformed CVS Header on line: 3 + games-util/fpdb/fpdb-9999.ebuild: Malformed CVS Header on line: 3 + + +Useful Links: +http://overlays.gentoo.org/proj/sunrise/wiki/SunriseFaq +http://www.linuxhowtos.org/manpages/1/repoman.htm +http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml The gentoo devrel handbook. Of particular relevance is the "Guides" section. \ No newline at end of file diff --git a/packaging/gentoo/metadata.xml b/packaging/gentoo/metadata.xml index 7aa0ff64..ebbe2f40 100644 --- a/packaging/gentoo/metadata.xml +++ b/packaging/gentoo/metadata.xml @@ -2,11 +2,7 @@ - OpenOffice is the opensource version of staroffice. - This ebuild allows you to compile it yourself. Unfortunately this - compilation can take up to a day depending on the speed of your - computer. It will however make a snappier openoffice than the binary - version. + FPDB (Free Poker Database) is a free/open source suite of steadily growing tools to track and analyse your poker game. FPDB is able to import the hand histories that poker sites write to your computer, store additional data from each hand in a database for use in later analysis. Enable dependencies for making graphs From c7a471e41f324e740aead68910801ce9a4783e8e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 21:27:08 +0200 Subject: [PATCH 163/641] update gentoo ebuild dev readme --- packaging/gentoo/dev-readme.txt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packaging/gentoo/dev-readme.txt b/packaging/gentoo/dev-readme.txt index 3ca779d2..b81776fc 100644 --- a/packaging/gentoo/dev-readme.txt +++ b/packaging/gentoo/dev-readme.txt @@ -1,14 +1,10 @@ Repoman currently gives the following errors for our ebuilds: - ebuild.allmasked: This error can be ignored - changelog.missing 1 - games-util/fpdb/ChangeLog - LIVEVCS.unmasked 1 - games-util/fpdb/fpdb-9999.ebuild + ebuild.allmasked: This error can be ignored, as all our packages are supposed to be masked ebuild.badheader 3 games-util/fpdb/fpdb-0.20.1.ebuild: Malformed CVS Header on line: 3 games-util/fpdb/fpdb-0.20.904.ebuild: Malformed CVS Header on line: 3 games-util/fpdb/fpdb-9999.ebuild: Malformed CVS Header on line: 3 - + not sure what the correct header is for a sunrise ebuild so leaving as-is for now Useful Links: http://overlays.gentoo.org/proj/sunrise/wiki/SunriseFaq From 7b56b5b5427b884944ca438797d10843b48b6a4a Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 21:30:40 +0200 Subject: [PATCH 164/641] minor ebuild updates --- packaging/gentoo/ChangeLog | 2 +- packaging/gentoo/Manifest | 10 +++++----- packaging/gentoo/current_stable.ebuild | 2 +- packaging/gentoo/current_testing.ebuild | 2 +- packaging/gentoo/fpdb-9999.ebuild | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packaging/gentoo/ChangeLog b/packaging/gentoo/ChangeLog index 1100d61e..f72a9a13 100644 --- a/packaging/gentoo/ChangeLog +++ b/packaging/gentoo/ChangeLog @@ -6,5 +6,5 @@ 17 Aug 2010; Steffen Schaumburg +fpdb-0.20.1.ebuild, +fpdb-0.20.904.ebuild, +fpdb-9999.ebuild, +metadata.xml: - Initial changelogged commit, this ebuild was created by ferki and I made some changes to comply with repoman. + Initial changelog for repoman. diff --git a/packaging/gentoo/Manifest b/packaging/gentoo/Manifest index 83b320f0..2b12bcf1 100644 --- a/packaging/gentoo/Manifest +++ b/packaging/gentoo/Manifest @@ -1,7 +1,7 @@ DIST fpdb-0.20.1.tar.bz2 662807 RMD160 b5f22a684c605ddbba7d2154005a822b02a19490 SHA1 e4cc40de5849d3ae33a680d917b340ab37c6448b SHA256 46eff0625f300c070ce88c519ae6019f6e1c98a7725733c5e16b50a058247fe3 DIST fpdb-0.20.904.tar.bz2 632871 RMD160 6af83a9b30e8b3f394b011a4dc92937f130b9e15 SHA1 083c51f1627f901e24801bf6abebf1d07646bd89 SHA256 5e72055fe7ebb0c6048282f8edc972ee01be21063d6f8071abef22111f3e82f9 -EBUILD fpdb-0.20.1.ebuild 1553 RMD160 24e8aa18cf2b936db23994e5c26a06692d6ebe5b SHA1 05906bea1edbb6e71a95a044fcfe849fe75a737c SHA256 d8850dc2368543062a57b0928cf9fad3d907881e904bf879f904f40e6a734b73 -EBUILD fpdb-0.20.904.ebuild 1557 RMD160 0a45c3d11cd0e5feff055324042476131ccd4285 SHA1 ce8e12fc4458a17b36ccaf3a3fee726c7e6d6751 SHA256 5e8bc7675c9e52fb89f05980f36a60f9ce0f0ef5e700286d8dd1936fbcef3f41 -EBUILD fpdb-9999.ebuild 1580 RMD160 91fbc789bef8f2e534cb15f70b498300579df1ae SHA1 08e4c2bb6c82e6d8dd5a84ce9a37f11105836b9e SHA256 8412055bfa358b6bcc5aa6fad13e9aa43244a478d1164de672ac53fdf4e27830 -MISC ChangeLog 474 RMD160 0068d0dd611d3deab35899b5af689d8f5e81546f SHA1 cd473e96d2e57b813cf7d85f0f30c30b9486110e SHA256 50d110c80c42d6f127b32a8edb61dd655c481cbb2d6ec60e557afe3388c6cb48 -MISC metadata.xml 547 RMD160 3f6ca7b0d6eba60a05ef68b080a2cc73f11edcfc SHA1 cee8c2763094e28d6df20b1cf693d98b4a22bf1c SHA256 a9f0e5034bce25dfd9f0d75f0569f870b0320d73dd3e264049c49b543e9e91b0 +EBUILD fpdb-0.20.1.ebuild 1591 RMD160 56ccbca72353e56718a927178e58d148177f5846 SHA1 770df692b29b7314d70703010e1f6afac623c3f3 SHA256 e3f434df58d98760a118458166f9fdfcf3612712c78c704f089f6e8ec72bd224 +EBUILD fpdb-0.20.904.ebuild 1595 RMD160 b5cbcdb8d2984b149c833db8b6aee362168e9c7d SHA1 7151fd3cef087c38060b44adb622843a84209f33 SHA256 41c6ed71aa0ff727d670c94cc72cf595bcd038f601121e51222532df727a6d01 +EBUILD fpdb-9999.ebuild 1618 RMD160 843d309bbc2ccdd95dbb4b0eb08571d8e16d06ad SHA1 b1ebdbe0e40bd6c0d4ec417dd2b8a135884547a6 SHA256 72205c1f94bcf2c3f310d396928e357fabaee4861773044c1dac71f98f6596bf +MISC ChangeLog 395 RMD160 b195ccf198011356ca79b16071093c4d92e5927a SHA1 9aa56e5dc9c5d03b62fb60bc81069f3440b1f606 SHA256 b7ba8c180da0e6a405d939c4485f9c8e52fdcafb04207ef6de217a807015bd03 +MISC metadata.xml 550 RMD160 a6fa8799f644c0882f832a12cc9e6a0f4f09ae7f SHA1 3a40c442cadb1f532e0299040c2da79e9721dd4f SHA256 b5a1c538de3786446a87479b1023cdb4f084085feb7290959619739969ce7d3b diff --git a/packaging/gentoo/current_stable.ebuild b/packaging/gentoo/current_stable.ebuild index 69d5c7b0..a62b2fe0 100644 --- a/packaging/gentoo/current_stable.ebuild +++ b/packaging/gentoo/current_stable.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# created by Steffen Schaumburg, steffen@schaumburger.info +# created by Steffen Schaumburg, steffen@schaumburger.info and Erki Ferenc, erkiferenc@gmail.com EAPI="2" inherit eutils diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index f4338fce..e2a9c67c 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# created by Steffen Schaumburg, steffen@schaumburger.info +# created by Steffen Schaumburg, steffen@schaumburger.info and Erki Ferenc, erkiferenc@gmail.com EAPI="2" inherit eutils diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index b2eaa48b..a2e28197 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# created by Steffen Schaumburg, steffen@schaumburger.info +# created by Steffen Schaumburg, steffen@schaumburger.info and Erki Ferenc, erkiferenc@gmail.com EAPI="2" inherit eutils From 0e8c9af16f87f14c3f63de3188cf2378cb409fd8 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 21:49:55 +0200 Subject: [PATCH 165/641] remove log entry that's over 90% of my log --- pyfpdb/Database.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index f27fbc4b..9204f271 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -496,7 +496,7 @@ class Database: for i in xrange(maxtimes): try: ret = self.connection.commit() - log.debug(_("commit finished ok, i = ")+str(i)) + #log.debug(_("commit finished ok, i = ")+str(i)) ok = True except: log.debug(_("commit %s failed: info=%s value=%s") % (str(i), str(sys.exc_info()), str(sys.exc_value))) From 3fa87d74432883967bdc57221fb6241f12f45fe6 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Tue, 17 Aug 2010 22:51:04 +0200 Subject: [PATCH 166/641] l10n: updated Hungarian translation --- pyfpdb/locale/fpdb-hu_HU.po | 483 +++++++++++++++++------------------- 1 file changed, 226 insertions(+), 257 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index ea1a3f23..63fd9888 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.904\n" "POT-Creation-Date: 2010-08-17 20:08+CEST\n" -"PO-Revision-Date: 2010-08-16 00:47+0200\n" +"PO-Revision-Date: 2010-08-17 22:43+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -140,318 +140,314 @@ msgstr "Hiba a(z) %s olvasása közben. Nézz bele a naplófájlba." #: Database.py:74 msgid "Not using sqlalchemy connection pool." -msgstr "" +msgstr "SQLAlchemy connection pool használatának kihagyása." #: Database.py:81 msgid "Not using numpy to define variance in sqlite." -msgstr "" +msgstr "A variancia SQLite-ban való definiálásához nincs használva a NumPy." #: Database.py:246 msgid "Creating Database instance, sql = %s" -msgstr "" +msgstr "Adatbázis-példány létrehozása, sql = %s" #: Database.py:382 msgid "*** WARNING UNKNOWN MYSQL ERROR:" -msgstr "" +msgstr "*** FIGYELEM: ISMERETLEN MYSQL HIBA: " #: Database.py:436 -#, fuzzy msgid "Connecting to SQLite: %(database)s" -msgstr "Kapcsolódva a %(database)s SQLite adatbázishoz" +msgstr "Kapcsolódás a %(database)s SQLite adatbázishoz" #: Database.py:448 msgid "Some database functions will not work without NumPy support" -msgstr "" +msgstr "Néhány adatbázis-funkció nem fog működni NumPy támogatás nélkül" #: Database.py:469 msgid "outdated or too new database version (%s) - please recreate tables" msgstr "" +"elavult vagy túl új adatbázis verzió (%s) - kérlek hozd létre újra a táblákat" #: Database.py:475 Database.py:476 -#, fuzzy msgid "Failed to read settings table - recreating tables" -msgstr "Erősítsd meg a táblák törlését és újra létrehozását" +msgstr "Nem sikerült az olvasás a beállítások táblából - táblák létrehozása" #: Database.py:480 Database.py:481 msgid "Failed to read settings table - please recreate tables" msgstr "" +"Nem sikerült az olvasás a beállítások táblából - kérlek hozd létre újra a " +"táblákat" #: Database.py:499 msgid "commit finished ok, i = " -msgstr "" +msgstr "a véglegesítés sikeresen befejeződött, i = " #: Database.py:502 msgid "commit %s failed: info=%s value=%s" -msgstr "" +msgstr "%s. véglegesítés nem sikerült: info=%s érték=%s" #: Database.py:506 msgid "commit failed" -msgstr "" +msgstr "a véglegesítés nem sikerült" #: Database.py:675 Database.py:704 -#, fuzzy msgid "*** Database Error: " -msgstr "***Hiba: " +msgstr "*** Adatbázis hiba: " #: Database.py:701 msgid "Database: date n hands ago = " -msgstr "" +msgstr "Adatbázis: n-nel ezelőtti leosztás dátuma = " #: Database.py:858 msgid "ERROR: query %s result does not have player_id as first column" -msgstr "" +msgstr "ERROR: a(z) %s lekérdezés eredményének nem a player_id az első oszlopa" #: Database.py:900 msgid "getLastInsertId(): problem fetching insert_id? ret=%d" -msgstr "" +msgstr "getLastInsertId(): probléma insert_id lekérdezése közben? ret=%d" #: Database.py:912 msgid "getLastInsertId(%s): problem fetching lastval? row=%d" -msgstr "" +msgstr "getLastInsertId(%s): probléma lastval lekérdezése közben? sor=%d" #: Database.py:919 msgid "getLastInsertId(): unknown backend: %d" -msgstr "" +msgstr "getLastInsertId(): ismeretlen backend: %d" #: Database.py:924 msgid "*** Database get_last_insert_id error: " -msgstr "" +msgstr "*** get_last_insert_id adatbázis hiba: " #: Database.py:978 Database.py:1398 msgid "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." msgstr "" +"figyelem: a(z) %s_%s_fkey pg idegen kulcs eldobása nem sikerült: %s, " +"folytatás ..." #: Database.py:982 Database.py:1402 msgid "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." -msgstr "" +msgstr "figyelem: a(z) %s_%s_fkey megkötés nem lett eldobva: %s, folytatás ..." #: Database.py:990 Database.py:1276 msgid "dropping mysql index " -msgstr "" +msgstr "MySQL index eldobása: " #: Database.py:996 Database.py:1281 Database.py:1289 Database.py:1296 -#, fuzzy msgid " drop index failed: " -msgstr "Indexek eldobása" +msgstr " index eldobása nem sikerült: " #: Database.py:1001 Database.py:1283 msgid "dropping pg index " -msgstr "" +msgstr "pg index eldobása: " #: Database.py:1014 msgid "warning: drop index %s_%s_idx failed: %s, continuing ..." msgstr "" +"figyelem: a(z) %s_%s_idx index eldobása nem sikerült: %s, folytatás ..." #: Database.py:1018 msgid "warning: index %s_%s_idx not dropped %s, continuing ..." -msgstr "" +msgstr "figyelem: a(z) %s_%s_idx index nem lett eldobva: %s, folytatás ..." #: Database.py:1058 Database.py:1066 Database.py:1329 Database.py:1337 msgid "creating foreign key " -msgstr "" +msgstr "idegen kulcs létrehozása: " #: Database.py:1064 Database.py:1085 Database.py:1335 msgid " create foreign key failed: " -msgstr "" +msgstr " idegen kulcs létrehozása sikertelen: " #: Database.py:1073 Database.py:1344 msgid " create foreign key failed: " -msgstr "" +msgstr " idegen kulcs létrehozása sikertelen: " #: Database.py:1080 msgid "creating mysql index " -msgstr "" +msgstr "MySQL index létrehozása: " #: Database.py:1089 -#, fuzzy msgid "creating pg index " -msgstr "Hello létrehozása" +msgstr "pg index létrehozása: " #: Database.py:1094 msgid " create index failed: " -msgstr "" +msgstr " index létrehozása nem sikerült: " #: Database.py:1134 Database.py:1135 -#, fuzzy msgid "Finished recreating tables" -msgstr "A felhasználó mégsem generálja újra a táblákat." +msgstr "A táblák létrehozása befejeződött" #: Database.py:1172 msgid "***Error creating tables: " -msgstr "" +msgstr "*** Hiba a táblák létrehozása közben: " #: Database.py:1182 msgid "*** Error unable to get databasecursor" -msgstr "" +msgstr "*** Hiba: nem olvasható a databasecursor" #: Database.py:1194 Database.py:1205 Database.py:1215 Database.py:1222 -#, fuzzy msgid "***Error dropping tables: " -msgstr "Hibanaplózási szint:" +msgstr "*** Hiba a táblák eldobása közben: " #: Database.py:1220 msgid "*** Error in committing table drop" -msgstr "" +msgstr "*** Hiba a tábla-eldobás véglegesítése közben" #: Database.py:1234 Database.py:1235 msgid "Creating mysql index %s %s" -msgstr "" +msgstr "MySQL index létrehozása: %s %s" #: Database.py:1240 Database.py:1249 msgid " create index failed: " -msgstr "" +msgstr " Index létrehozása nem sikerült: " #: Database.py:1243 Database.py:1244 msgid "Creating pgsql index %s %s" -msgstr "" +msgstr "pgsql index létrehozása: %s %s" #: Database.py:1251 Database.py:1252 msgid "Creating sqlite index %s %s" -msgstr "" +msgstr "SQLite index létrehozása: %s %s" #: Database.py:1257 msgid "Create index failed: " -msgstr "" +msgstr "Index létrehozása nem sikerült: " #: Database.py:1259 msgid "Unknown database: MySQL, Postgres and SQLite supported" -msgstr "" +msgstr "Ismeretlen adatbázis: a MySQL, a Postgres és az SQLite támogatott" #: Database.py:1264 -#, fuzzy msgid "Error creating indexes: " -msgstr "Hiba a(z) '%s' konvertálása közben" +msgstr "Hiba az indexek létrehozása közben: " #: Database.py:1291 msgid "Dropping sqlite index " -msgstr "" +msgstr "SQLite index eldobása: " #: Database.py:1298 msgid "" "Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" msgstr "" +"Fpdb csak a MySQL-t, a Postgres-t és az SQLite-ot támogatja. Mit próbáltál " +"használni?" #: Database.py:1312 Database.py:1352 msgid " set_isolation_level failed: " -msgstr "" +msgstr " set_isolation_level meghiúsult: " #: Database.py:1346 Database.py:1405 msgid "Only MySQL and Postgres supported so far" -msgstr "" +msgstr "Egyelőre csak a MySQL és a Postgres támogatott" #: Database.py:1376 msgid "dropping mysql foreign key" -msgstr "" +msgstr "MySQL idegen kulcs eldobása" #: Database.py:1380 msgid " drop failed: " -msgstr "" +msgstr " az eldobás sikertelen: " #: Database.py:1383 msgid "dropping pg foreign key" -msgstr "" +msgstr "pg idegen kulcs eldobása" #: Database.py:1395 msgid "dropped pg foreign key %s_%s_fkey, continuing ..." -msgstr "" +msgstr "%s_%s_fkey pg idegen kulcs eldobva, folytatás ..." #: Database.py:1496 msgid "Rebuild hudcache took %.1f seconds" -msgstr "" +msgstr "A HUD cache újraépítése %.1f másodpercig tartott" #: Database.py:1499 Database.py:1532 -#, fuzzy msgid "Error rebuilding hudcache:" -msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." +msgstr "Hiba a HUD cache újraépítése közben:" #: Database.py:1544 Database.py:1550 -#, fuzzy msgid "Error during analyze:" -msgstr "Hibanaplózási szint:" +msgstr "Hiba analyze közben:" #: Database.py:1554 msgid "Analyze took %.1f seconds" -msgstr "" +msgstr "Analyze %1.f másodpercig tartott" #: Database.py:1564 Database.py:1570 -#, fuzzy msgid "Error during vacuum:" -msgstr "Hibanaplózási szint:" +msgstr "Hiba vacuum közben:" #: Database.py:1574 msgid "Vacuum took %.1f seconds" -msgstr "" +msgstr "Vacuum %.1f másodpercig tartott" #: Database.py:1586 msgid "Error during lock_for_insert:" -msgstr "" +msgstr "Hiba lock_for_insert közben:" #: Database.py:1959 msgid "queue empty too long - writer stopping ..." -msgstr "" +msgstr "Queue.Empty túl sokáig tart - az írás befejeződik ..." #: Database.py:1962 msgid "writer stopping, error reading queue: " -msgstr "" +msgstr "az írás megállt, hiba a sor olvasásakor: " #: Database.py:1987 msgid "deadlock detected - trying again ..." -msgstr "" +msgstr "deadlock történt - újrapróbálás ..." #: Database.py:1992 msgid "too many deadlocks - failed to store hand " -msgstr "" +msgstr "túl sok deadlock - nem sikerült tárolni a leosztást " #: Database.py:1996 -#, fuzzy msgid "***Error storing hand: " -msgstr "***Hiba: " +msgstr "***Hiba a leosztás tárolása közben: " #: Database.py:2006 -#, fuzzy msgid "db writer finished: stored %d hands (%d fails) in %.1f seconds" -msgstr "%d leosztás beolvasva (%d sikertelen) %.3f mp alatt" +msgstr "" +"adatbázisba írás befejeződött: %d leosztás tárolva (%d sikertelen) %.1f mp " +"alatt" #: Database.py:2016 msgid "***Error sending finish: " -msgstr "" +msgstr "***Hiba a befejezés küldésekor: " #: Database.py:2096 msgid "invalid source in Database.createOrUpdateTourney" -msgstr "" +msgstr "érvénytelen forrás a Database.createOrUpdateTourney-ban" #: Database.py:2109 msgid "invalid source in Database.createOrUpdateTourneysPlayers" -msgstr "" +msgstr "érvénytelen forrás a Database.createOrUpdateTourneysPlayers-ben" #: Database.py:2235 msgid "HandToWrite.init error: " -msgstr "" +msgstr "HandToWrite.init hiba: " #: Database.py:2285 msgid "HandToWrite.set_all error: " -msgstr "" +msgstr "HandToWrite.set_all hiba: " #: Database.py:2316 msgid "nutOmatic is id_player = %d" -msgstr "" +msgstr "nutOmatic id_player értéke = %d" #: Database.py:2324 msgid "query plan: " -msgstr "" +msgstr "lekérdezési terv: " #: Database.py:2333 msgid "cards =" -msgstr "" +msgstr "kezdőkéz =" #: Database.py:2336 msgid "get_stats took: %4.3f seconds" -msgstr "" +msgstr "get_stats időigény: %4.3f mp" #: Database.py:2338 Tables.py:448 -#, fuzzy msgid "press enter to continue" -msgstr " - nyomj ENTER-t a folytatáshoz\n" +msgstr "nyomj ENTER-t a folytatáshoz" #: Filters.py:62 msgid "All" @@ -824,8 +820,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " -"%s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" +"s másodperc alatt - %.0f/mp" #: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" @@ -1115,33 +1111,28 @@ msgid "Stats page displayed in %4.2f seconds" msgstr "Statisztikák megjelenítve %4.2f mp alatt" #: GuiRingPlayerStats.py:370 -#, fuzzy msgid "***sortnums error: " -msgstr "***sortCols hiba: " +msgstr "***sortnums hiba: " #: GuiRingPlayerStats.py:392 -#, fuzzy msgid "***sortcols error: " msgstr "***sortCols hiba: " #: GuiRingPlayerStats.py:683 msgid "Detailed Filters" -msgstr "" +msgstr "Részletes szűrők" #: GuiRingPlayerStats.py:692 -#, fuzzy msgid "Hand Filters:" -msgstr "és mások" +msgstr "Leosztás szűrők:" #: GuiRingPlayerStats.py:705 -#, fuzzy msgid "between" msgstr "Min:" #: GuiRingPlayerStats.py:706 -#, fuzzy msgid "and" -msgstr "Leosztások" +msgstr "Max:" #: GuiSessionViewer.py:41 msgid "Failed to load numpy and/or matplotlib in Session Viewer" @@ -1281,11 +1272,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -1964,36 +1955,35 @@ msgstr "Meg kell adnod a játékos nevét" #: PartyPokerToFpdb.py:215 msgid "Cannot fetch field '%s'" -msgstr "" +msgstr "Nem található mező: '%s'" #: PartyPokerToFpdb.py:219 msgid "Unknown limit '%s'" -msgstr "" +msgstr "Ismeretlen limit: '%s'" #: PartyPokerToFpdb.py:224 msgid "Unknown game type '%s'" -msgstr "" +msgstr "Ismeretlen játéktípus: '%s'" #: PartyPokerToFpdb.py:258 msgid "Cannot read HID for current hand" -msgstr "" +msgstr "HID nem olvasható az aktuális leosztásból" #: PartyPokerToFpdb.py:263 msgid "Cannot read Handinfo for current hand" -msgstr "" +msgstr "Handinfo nem olvasható az aktuális leosztásból" #: PartyPokerToFpdb.py:268 msgid "Cannot read GameType for current hand" -msgstr "" +msgstr "GameType nem olvasható az aktuális leosztásból" #: PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 msgid "readButton: not found" msgstr "readButton: nem található" #: PartyPokerToFpdb.py:479 -#, fuzzy msgid "Unimplemented readAction: '%s' '%s'" -msgstr "DEBUG: nem ismert readAction: '%s' '%s'" +msgstr "Nem ismert readAction: '%s' '%s'" #: PokerStarsSummary.py:72 msgid "didn't recognise buyin currency in:" @@ -2029,162 +2019,159 @@ msgstr "antek olvasása" #: Stats.py:103 msgid "exception getting stat %s for player %s %s" -msgstr "" +msgstr "hiba a %s statisztika számításakor %s játékosnál: %s" #: Stats.py:104 msgid "Stats.do_stat result = %s" -msgstr "" +msgstr "Stats.do_stat eredmény = %s" #: Stats.py:113 -#, fuzzy msgid "error: %s" -msgstr "A hiba a következő: %s" +msgstr "hiba: %s" #: Stats.py:132 Stats.py:133 msgid "Total Profit" -msgstr "" +msgstr "teljes profit" #: Stats.py:154 Stats.py:161 msgid "Voluntarily Put In Pot Pre-Flop%" -msgstr "" +msgstr "önként befizet preflop %" #: Stats.py:174 Stats.py:182 msgid "Pre-Flop Raise %" -msgstr "" +msgstr "preflop emelés" #: Stats.py:195 Stats.py:203 msgid "% went to showdown" -msgstr "" +msgstr "terítésig megy %" #: Stats.py:216 Stats.py:224 msgid "% won money at showdown" -msgstr "" +msgstr "pénzt nyer terítéskor %" #: Stats.py:237 Stats.py:246 msgid "profit/100hands" -msgstr "" +msgstr "profit/100 leosztás" #: Stats.py:240 msgid "exception calcing p/100: 100 * %d / %d" -msgstr "" +msgstr "hiba a p/100 számítása közben: 100 * %d / %d" #: Stats.py:259 Stats.py:268 msgid "big blinds/100 hands" -msgstr "" +msgstr "nagyvak/100 leosztás" #: Stats.py:281 Stats.py:290 msgid "Big Bets/100 hands" -msgstr "" +msgstr "nagytét/100 leosztás" #: Stats.py:284 msgid "exception calcing BB/100: " -msgstr "" +msgstr "hiba a BB/100 számítása közben: " #: Stats.py:304 Stats.py:315 msgid "Flop Seen %" -msgstr "" +msgstr "flopot néz %" #: Stats.py:338 Stats.py:346 -#, fuzzy msgid "number hands seen" -msgstr "Leosztások száma:" +msgstr "látott leosztások száma" #: Stats.py:359 Stats.py:367 msgid "folded flop/4th" -msgstr "" +msgstr "dobott flopon/4. utcán" #: Stats.py:380 msgid "% steal attempted" -msgstr "" +msgstr "lopási kísérlet %" #: Stats.py:395 Stats.py:402 msgid "% folded SB to steal" -msgstr "" +msgstr "kisvakból dob lopásra %" #: Stats.py:414 Stats.py:421 msgid "% folded BB to steal" -msgstr "" +msgstr "nagyvakból dob lopásra %" #: Stats.py:436 Stats.py:443 msgid "% folded blind to steal" -msgstr "" +msgstr "dob lopásra %" #: Stats.py:455 Stats.py:462 msgid "% 3/4 Bet preflop/3rd" -msgstr "" +msgstr "3/4-bet preflop/3. utcán %" #: Stats.py:474 Stats.py:481 msgid "% won$/saw flop/4th" -msgstr "" +msgstr "$nyer/flopot/4. utcát néz %" #: Stats.py:493 Stats.py:500 msgid "Aggression Freq flop/4th" -msgstr "" +msgstr "agresszió gyakoriság flopon/4. utcán" #: Stats.py:512 Stats.py:519 msgid "Aggression Freq turn/5th" -msgstr "" +msgstr "agresszió gyakoriság turnön/5. utcán" #: Stats.py:531 Stats.py:538 msgid "Aggression Freq river/6th" -msgstr "" +msgstr "agresszió gyakoriság riveren/6. utcán" #: Stats.py:550 Stats.py:557 msgid "Aggression Freq 7th" -msgstr "" +msgstr "agresszió gyakoriság 7. utcán" #: Stats.py:576 Stats.py:583 msgid "Post-Flop Aggression Freq" -msgstr "" +msgstr "postflop agresszió gyakoriság" #: Stats.py:604 Stats.py:611 msgid "Aggression Freq" -msgstr "" +msgstr "agresszió gyakoriság" #: Stats.py:630 Stats.py:637 -#, fuzzy msgid "Aggression Factor" -msgstr "Session statisztikák" +msgstr "agresszió faktor" #: Stats.py:654 Stats.py:661 msgid "% continuation bet " -msgstr "" +msgstr "folytató nyitás %" #: Stats.py:673 Stats.py:680 msgid "% continuation bet flop/4th" -msgstr "" +msgstr "folytató nyitás flopon/4. utcán %" #: Stats.py:692 Stats.py:699 msgid "% continuation bet turn/5th" -msgstr "" +msgstr "folytató nyitás turnön/5. utcán %" #: Stats.py:711 Stats.py:718 msgid "% continuation bet river/6th" -msgstr "" +msgstr "folytató nyitás riveren/6. utcán %" #: Stats.py:730 Stats.py:737 msgid "% continuation bet 7th" -msgstr "" +msgstr "folytató nyitás 7. utcán %" #: Stats.py:749 Stats.py:756 msgid "% fold frequency flop/4th" -msgstr "" +msgstr "dobási gyakoriság flopon/4. utcán %" #: Stats.py:768 Stats.py:775 msgid "% fold frequency turn/5th" -msgstr "" +msgstr "dobási gyakoriság turnön/5. utcán %" #: Stats.py:787 Stats.py:794 msgid "% fold frequency river/6th" -msgstr "" +msgstr "dobási gyakoriság riveren/6. utcán %" #: Stats.py:806 Stats.py:813 msgid "% fold frequency 7th" -msgstr "" +msgstr "dobási gyakoriság 7. utcán %" #: Stats.py:833 msgid "Example stats, player = %s hand = %s:" -msgstr "" +msgstr "Példa statisztikák, játékos = %s leosztás = %s:" #: Stats.py:866 msgid "" @@ -2192,20 +2179,25 @@ msgid "" "\n" "Legal stats:" msgstr "" +"\n" +"\n" +"Érvényes statisztikák:" #: Stats.py:867 msgid "" "(add _0 to name to display with 0 decimal places, _1 to display with 1, " "etc)\n" msgstr "" +"(írj a név után _0-t tizedesjegy nélküli megjelenítéshez, _1-et az egy " +"tizedesjegyhez, stb.)\n" #: Tables.py:234 msgid "Found unknown table = %s" -msgstr "" +msgstr "Ismeretlen asztal = %s" #: Tables.py:261 msgid "attach to window" -msgstr "" +msgstr "csatolás ezen ablakhoz: " #: Tables_Demo.py:72 msgid "Fake HUD Main Window" @@ -2220,266 +2212,240 @@ msgid "calling main" msgstr "main hívása" #: TournamentTracker.py:50 -#, fuzzy msgid "" "Note: error output is being diverted to fpdb-error-log.txt and HUD-error." "txt. Any major error will be reported there _only_." msgstr "" -"\n" "Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " -"fájlokba itt:\n" +"fájlokba. Bármilyen nagyobb hiba _csak_oda_ kerül kiírásra." #: TournamentTracker.py:111 msgid "tournament edit window=" -msgstr "" +msgstr "versenyszerkesztő ablak=" #: TournamentTracker.py:114 msgid "FPDB Tournament Entry" -msgstr "" +msgstr "FPDB Versenybeírás" #: TournamentTracker.py:154 -#, fuzzy msgid "Closing this window will stop the Tournament Tracker" -msgstr "Ezen ablak bezárása a HUD-ot is bezárja." +msgstr "Ezen ablak bezárása leállítja a Versenykövetőt" #: TournamentTracker.py:156 msgid "Enter Tournament" -msgstr "" +msgstr "Verseny beírása" #: TournamentTracker.py:161 msgid "FPDB Tournament Tracker" -msgstr "" +msgstr "FPDB Versenykövető" #: TournamentTracker.py:172 msgid "Edit" -msgstr "" +msgstr "Szerkeszt" #: TournamentTracker.py:175 msgid "Rebuy" -msgstr "" +msgstr "Rebuy" #: TournamentTracker.py:274 msgid "db error: skipping " -msgstr "" +msgstr "adatbázis hiba: kihagyásra kerül a(z)" #: TournamentTracker.py:276 msgid "Database error %s in hand %d. Skipping.\n" -msgstr "" +msgstr "%s adatbázishiba a %d leosztásban. Kihagyás.\n" #: TournamentTracker.py:285 msgid "could not find tournament: skipping" -msgstr "" +msgstr "nem található a verseny: kihagyás" #: TournamentTracker.py:286 msgid "Could not find tournament %d in hand %d. Skipping.\n" -msgstr "" +msgstr "Nem található a %d versenyazonosító a%d leosztásban. Kihagyás.\n" #: TournamentTracker.py:309 -#, fuzzy msgid "table name %s not found, skipping.\n" -msgstr "HUD létrehozás: %s nevű asztal nincs meg, kihagyás." +msgstr "%s nevű asztal nincs meg, kihagyás.\n" #: TournamentTracker.py:316 msgid "tournament tracker starting\n" -msgstr "" +msgstr "versenykövető indítása\n" #: TourneyFilters.py:61 -#, fuzzy msgid "Tourney Type" -msgstr "Versenyek" +msgstr "Verseny típusa" #: TourneyFilters.py:88 msgid "setting numTourneys:" -msgstr "" +msgstr "numTourneys beállítása:" #: TourneySummary.py:136 msgid "END TIME" -msgstr "" +msgstr "BEFEJEZÉS IDŐPONTJA" #: TourneySummary.py:137 -#, fuzzy msgid "TOURNEY NAME" -msgstr "VERSENY MEGJEGYZÉS" +msgstr "VERSENY NEVE" #: TourneySummary.py:138 -#, fuzzy msgid "TOURNEY NO" -msgstr "VERSENYAZONOSÍTÓ" +msgstr "VERSENY SZÁMA" #: TourneySummary.py:143 -#, fuzzy msgid "CURRENCY" -msgstr "NEVEZÉSI DÍJ PÉNZNEME" +msgstr "PÉNZNEM" #: TourneySummary.py:146 msgid "ENTRIES" -msgstr "" +msgstr "NEVEZÉSEK SZÁMA" #: TourneySummary.py:147 msgid "SPEED" -msgstr "" +msgstr "GYORS" #: TourneySummary.py:148 msgid "PRIZE POOL" -msgstr "" +msgstr "DÍJALAP" #: TourneySummary.py:149 msgid "STARTING CHIP COUNT" -msgstr "" +msgstr "KEZDŐ ZSETONKÉSZLET" #: TourneySummary.py:151 -#, fuzzy msgid "REBUY" msgstr "REBUY" #: TourneySummary.py:152 -#, fuzzy msgid "ADDON" msgstr "ADDON" #: TourneySummary.py:153 msgid "KO" -msgstr "" +msgstr "KIÜTÉSES" #: TourneySummary.py:154 -#, fuzzy msgid "MATRIX" msgstr "MÁTRIX" #: TourneySummary.py:155 msgid "MATRIX ID PROCESSED" -msgstr "" +msgstr "MÁTRIX AZONOSÍTÓ FELDOLGOZOTT" #: TourneySummary.py:156 -#, fuzzy msgid "SHOOTOUT" msgstr "SHOOTOUT" #: TourneySummary.py:157 msgid "MATRIX MATCH ID" -msgstr "" +msgstr "MÁTRIX MECCSAZONOSÍTÓ" #: TourneySummary.py:158 -#, fuzzy msgid "SUB TOURNEY BUY IN" -msgstr "VERSENYTÍPUS AZONOSÍTÓ" +msgstr "ALVERSENY NEVEZÉSI DÍJ" #: TourneySummary.py:159 -#, fuzzy msgid "SUB TOURNEY FEE" -msgstr "VERSENYAZONOSÍTÓ" +msgstr "ALVERSENY DÍJ" #: TourneySummary.py:160 -#, fuzzy msgid "REBUY CHIPS" -msgstr "KEZDŐ ZSETONOK" +msgstr "REBUY ZSETONOK" #: TourneySummary.py:161 -#, fuzzy msgid "ADDON CHIPS" -msgstr "KEZDŐ ZSETONOK" +msgstr "ADDON ZSETONOK" #: TourneySummary.py:162 msgid "REBUY COST" -msgstr "" +msgstr "REBUY ÁRA" #: TourneySummary.py:163 msgid "ADDON COST" -msgstr "" +msgstr "ADDON ÁRA" #: TourneySummary.py:164 -#, fuzzy msgid "TOTAL REBUYS" -msgstr "REBUY" +msgstr "ÖSSZES REBUY" #: TourneySummary.py:165 -#, fuzzy msgid "TOTAL ADDONS" -msgstr "TELJES KASSZA" +msgstr "ÖSSZES ADDON" #: TourneySummary.py:168 -#, fuzzy msgid "SNG" -msgstr "ÜLTETÉS" +msgstr "SIT'N'GO" #: TourneySummary.py:169 msgid "SATELLITE" -msgstr "" +msgstr "SZATELIT" #: TourneySummary.py:170 msgid "DOUBLE OR NOTHING" -msgstr "" +msgstr "DUPLA VAGY SEMMI" #: TourneySummary.py:171 msgid "GUARANTEE" -msgstr "" +msgstr "GARANTÁLT DÍJ" #: TourneySummary.py:172 msgid "ADDED" -msgstr "" +msgstr "HOZZÁADOTT DÍJ" #: TourneySummary.py:173 -#, fuzzy msgid "ADDED CURRENCY" -msgstr "NEVEZÉSI DÍJ PÉNZNEME" +msgstr "HOZZÁADOTT DÍJ PÉNZNEME" #: TourneySummary.py:174 -#, fuzzy msgid "COMMENT" -msgstr "VERSENY MEGJEGYZÉS" +msgstr "MEGJEGYZÉS" #: TourneySummary.py:175 msgid "COMMENT TIMESTAMP" -msgstr "" +msgstr "MEGJEGYZÉS IDŐBÉLYEG" #: TourneySummary.py:178 -#, fuzzy msgid "PLAYER IDS" -msgstr "JÁTÉKOSOK" +msgstr "JÁTÉKOS AZONOSÍTÓK" #: TourneySummary.py:180 -#, fuzzy msgid "TOURNEYS PLAYERS IDS" msgstr "VERSENYJÁTÉKOS AZONOSÍTÓK" #: TourneySummary.py:181 msgid "RANKS" -msgstr "" +msgstr "HELYEZÉSEK" #: TourneySummary.py:182 msgid "WINNINGS" -msgstr "" +msgstr "NYEREMÉNY" #: TourneySummary.py:183 -#, fuzzy msgid "WINNINGS CURRENCY" -msgstr "NEVEZÉSI DÍJ PÉNZNEME" +msgstr "NYEREMÉNY PÉNZNEME" #: TourneySummary.py:184 -#, fuzzy msgid "COUNT REBUYS" -msgstr "SZÁMOLT SZÉKEK" +msgstr "REBUYOK SZÁMA" #: TourneySummary.py:185 -#, fuzzy msgid "COUNT ADDONS" -msgstr "SZÁMOLT SZÉKEK" +msgstr "ADDONOK SZÁMA" #: TourneySummary.py:186 msgid "NB OF KO" -msgstr "" +msgstr "KO SZÁMA" #: TourneySummary.py:233 msgid "Tourney Insert/Update done" -msgstr "" +msgstr "Verseny beszúrás/frissítés kész" #: TourneySummary.py:253 msgid "addPlayer: rank:%s - name : '%s' - Winnings (%s)" -msgstr "" +msgstr "addPlayer: helyezés:%s - név : '%s' - Nyeremény (%s)" #: TourneySummary.py:280 msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" -msgstr "" +msgstr "incrementPlayerWinnings: név : '%s' - plusz nyeremény (%s)" #: WinTables.py:70 msgid "Window %s not found. Skipping." @@ -3108,8 +3074,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " -"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" +"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1080 msgid "Help" @@ -3162,108 +3128,111 @@ msgstr "Válaszd ki a leosztásarchívum könyvtárát" #: fpdb_import.py:60 msgid "Import database module: MySQLdb not found" -msgstr "" +msgstr "Nem található a következő adatbázis-modul: MySQLdb" #: fpdb_import.py:67 msgid "Import database module: psycopg2 not found" -msgstr "" +msgstr "Nem található a következő adatbázis-modul: psycopg2" #: fpdb_import.py:178 msgid "Database ID for %s not found" -msgstr "" +msgstr "Azonosító nem található a(z) %s teremhez" #: fpdb_import.py:180 msgid "" "[ERROR] More than 1 Database ID found for %s - Multiple currencies not " "implemented yet" msgstr "" +"[ERROR] Egynél több azonosítót találtam a(z) %s teremhez - Termenként több " +"pénznem még nem támogatott" #: fpdb_import.py:216 msgid "Attempted to add non-directory: '%s' as an import directory" -msgstr "" +msgstr "Nem könyvtár ('%s') megadása importálási könyvtárként" #: fpdb_import.py:226 msgid "Started at %s -- %d files to import. indexes: %s" -msgstr "" +msgstr "Elindítva: %s -- %d fájl importálása. Indexek: %s" #: fpdb_import.py:235 msgid "No need to drop indexes." -msgstr "" +msgstr "Nem szükséges az indexek eldobása." #: fpdb_import.py:254 msgid "writers finished already" -msgstr "" +msgstr "az írások már befejeződtek" #: fpdb_import.py:257 msgid "waiting for writers to finish ..." -msgstr "" +msgstr "várakozás az írások befejeződésére ..." #: fpdb_import.py:267 msgid " ... writers finished" -msgstr "" +msgstr " ... az írások befejeződtek" #: fpdb_import.py:273 -#, fuzzy msgid "No need to rebuild indexes." -msgstr "A felhasználó megszakította az adatbázis indexeinek újraépítését." +msgstr "Nem szükséges az adatbázis indexeinek újraépítése." #: fpdb_import.py:277 -#, fuzzy msgid "No need to rebuild hudcache." -msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." +msgstr "Nem szükséges a HUD gyorstár újraépítése." #: fpdb_import.py:302 msgid "sending finish msg qlen =" -msgstr "" +msgstr "befejező üzenet küldése; qlen =" #: fpdb_import.py:428 fpdb_import.py:430 -#, fuzzy msgid "Converting " -msgstr "Hiba a(z) '%s' konvertálása közben" +msgstr "Konvertálás" #: fpdb_import.py:466 msgid "Hand processed but empty" -msgstr "" +msgstr "A leosztás feldolgozva, de üres volt" #: fpdb_import.py:479 msgid "fpdb_import: sending hand to hud" -msgstr "" +msgstr "fpdb_import: leosztás küldése a HUD számára" #: fpdb_import.py:482 msgid "Failed to send hand to HUD: %s" -msgstr "" +msgstr "Nem sikerült a leosztás elküldése a HUD számára: %s" #: fpdb_import.py:493 msgid "Unknown filter filter_name:'%s' in filter:'%s'" -msgstr "" +msgstr "Ismeretlen szűrő: filter_name:'%s' a '%s' szűrőben" #: fpdb_import.py:504 msgid "" "Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge." "net so we can fix the problem." msgstr "" +"%s számú hiba. Kérlek küldd el az ezt okozo leosztást az fpdb-main@lists." +"sourceforge.net címre, hogy ki tudjuk javítani a hibát." #: fpdb_import.py:505 msgid "Filename:" -msgstr "" +msgstr "Fájlnév:" #: fpdb_import.py:506 msgid "" "Here is the first line of the hand so you can identify it. Please mention " "that the error was a ValueError:" msgstr "" +"Itt az első sora a leosztásnak azonosítás céljából. Kérlek említsd majd meg, " +"hogy a hiba ValueError volt:" #: fpdb_import.py:508 msgid "Hand logged to hand-errors.txt" -msgstr "" +msgstr "A leosztás naplózva a hand-errors.txt fájlba" #: fpdb_import.py:516 msgid "CLI for fpdb_import is now available as CliFpdb.py" -msgstr "" +msgstr "az fpdb_import már parancssorból is elérhető a CliFpdb.py segítségével" #: interlocks.py:49 msgid "lock already held by:" -msgstr "" +msgstr "a zárolást már elvégezte:" #: test_Database.py:50 msgid "DEBUG: Testing variance function" From eb65a0775cb5a399c9d751a5a128edb24de3a81f Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 17 Aug 2010 23:01:47 +0200 Subject: [PATCH 167/641] update hungarian mo file --- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 45677 -> 63088 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index 3d96804b9a9558ca0a27cc7c15bd773086008922..3eb282d45d9fa0e832ba09cba500ee6a5221e4c0 100644 GIT binary patch delta 26108 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 iNv+FD$}6j@Sjjt+XUa+{tGy* Date: Tue, 17 Aug 2010 23:30:15 +0200 Subject: [PATCH 168/641] a couple of l10n related fixes to fpdb.pyw --- pyfpdb/fpdb.pyw | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index f0d73b8f..d3004bdb 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -873,7 +873,7 @@ class fpdb: sys.exit() log = Configuration.get_logger("logging.conf", "fpdb", log_dir=self.config.dir_log) - print _("Logfile is ") + os.path.join(self.config.dir_log, self.config.log_file) + "\n" + print (_("Logfile is %s\n") % os.path.join(self.config.dir_log, self.config.log_file)) if self.config.example_copy: self.info_box(_("Config file") , _("has been created at:\n%s.\n") % self.config.file @@ -901,7 +901,7 @@ class fpdb: self.db = Database.Database(self.config, sql = self.sql) if self.db.get_backend_name() == 'SQLite': # tell sqlite users where the db file is - print _("Connected to SQLite: %(database)s") % {'database':self.db.db_path} + print (_("Connected to SQLite: %s") % self.db.db_path) except Exceptions.FpdbMySQLAccessDenied: err_msg = _("MySQL Server reports: Access denied. Are your permissions set correctly?") except Exceptions.FpdbMySQLNoDatabase: From 9494cf95c02676fa12b0ef9f6bb3172fbff4a5e9 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Tue, 17 Aug 2010 23:49:30 +0200 Subject: [PATCH 169/641] l10n: fixes some typos in Hungarian translation --- pyfpdb/locale/fpdb-hu_HU.po | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 63fd9888..e57b8877 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.904\n" "POT-Creation-Date: 2010-08-17 20:08+CEST\n" -"PO-Revision-Date: 2010-08-17 22:43+0200\n" +"PO-Revision-Date: 2010-08-17 23:49+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -18,7 +18,7 @@ msgstr "" #: Anonymise.py:55 msgid "Could not find file %s" -msgstr "%s fájl nem találhatópd" +msgstr "%s fájl nem található" #: Anonymise.py:61 msgid "Output being written to" @@ -1183,7 +1183,7 @@ msgid "" "Player or tourney not found - please ensure you imported it and selected the " "correct site" msgstr "" -"A játékos vagy averseny nem található - kérlek ellenőrizd, hogy importáltad-" +"A játékos vagy a verseny nem található - kérlek ellenőrizd, hogy importáltad-" "e már, és hogy a helyes termet választottad" #: GuiTourneyViewer.py:119 @@ -1714,7 +1714,7 @@ msgstr "Standard bemenet olvasása ezzel: %s" #: HandHistoryConverter.py:451 msgid "unable to read file with any codec in list!" -msgstr "a file olvasása nem sikerült egyik listabeli kódolással sem" +msgstr "a fájl olvasása nem sikerült egyik listabeli kódolással sem" #: HandHistoryConverter.py:605 msgid "Unable to create output directory %s for HHC!" @@ -1788,11 +1788,11 @@ msgstr " A jelenlegi 0.5-2-szerese" #: Hud.py:180 Hud.py:249 msgid " 0.33 to 3.0 x Current Blinds" -msgstr "A jelenlegi 0.33-3-szorosa" +msgstr " A jelenlegi 0.33-3-szorosa" #: Hud.py:185 Hud.py:254 msgid " 0.1 to 10 x Current Blinds" -msgstr "A jelenlegi 0.1-10-szerese" +msgstr " A jelenlegi 0.1-10-szerese" #: Hud.py:190 Hud.py:259 msgid " All Levels" @@ -1816,7 +1816,7 @@ msgstr " Csak ez" #: Hud.py:213 Hud.py:282 msgid "Since:" -msgstr "Ez óta:" +msgstr "Szűkítés:" #: Hud.py:216 Hud.py:285 msgid " All Time" @@ -2007,7 +2007,7 @@ msgstr "Nem sikerült felismerni a játéktípust innen: '%s'" #: PokerStarsToFpdb.py:221 msgid "Lim_Blinds has no lookup for '%s'" -msgstr "Lim_Blindsban nincs '%s'" +msgstr "Lim_Blinds nem tartalmazza ezt: '%s'" #: PokerStarsToFpdb.py:273 msgid "failed to detect currency" @@ -2023,7 +2023,7 @@ msgstr "hiba a %s statisztika számításakor %s játékosnál: %s" #: Stats.py:104 msgid "Stats.do_stat result = %s" -msgstr "Stats.do_stat eredmény = %s" +msgstr "Stats.do_stat eredménye = %s" #: Stats.py:113 msgid "error: %s" @@ -2261,7 +2261,7 @@ msgstr "nem található a verseny: kihagyás" #: TournamentTracker.py:286 msgid "Could not find tournament %d in hand %d. Skipping.\n" -msgstr "Nem található a %d versenyazonosító a%d leosztásban. Kihagyás.\n" +msgstr "Nem található a %d versenyazonosító a %d leosztásban. Kihagyás.\n" #: TournamentTracker.py:309 msgid "table name %s not found, skipping.\n" @@ -2802,7 +2802,7 @@ msgstr "P" #: fpdb.pyw:838 msgid "Ring _Player Stats (tabulated view)" -msgstr "Kész_pénzes játékos statisztikák (táblázatos nézet)" +msgstr "Kész_pénzes statisztikák (táblázatos nézet)" #: fpdb.pyw:839 msgid "T" @@ -3236,7 +3236,7 @@ msgstr "a zárolást már elvégezte:" #: test_Database.py:50 msgid "DEBUG: Testing variance function" -msgstr "DEBUG: Varianciafügvény tesztelésa" +msgstr "DEBUG: Varianciafügvény tesztelése" #: test_Database.py:51 msgid "DEBUG: result: %s expecting: 0.666666 (result-expecting ~= 0.0): %s" From 351d58b757d2a991caa762b96e1d1a5ac34aec48 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 18 Aug 2010 00:27:06 +0200 Subject: [PATCH 170/641] update HU .mo file --- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 63088 -> 63100 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index 3eb282d45d9fa0e832ba09cba500ee6a5221e4c0..d8ce15cbe6a39c34b60de45311d753f1dc766a79 100644 GIT binary patch delta 5659 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 delta 5634 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 VdAMigJr6HFJY%qX;%l#B{|7$4{;~i7 From 3f0f421c0d0435f4978246f97f6ca68357548808 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 18 Aug 2010 13:12:11 +0800 Subject: [PATCH 171/641] FTP: Make FTP.fr hand histories parse. Had to adjust the currency character match, and the tablename which required \u2013 or 'En Dash' Works for the 5 hand sample provided. --- pyfpdb/FulltiltToFpdb.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 179824ac..4d7a7b62 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -32,12 +32,13 @@ class Fulltilt(HandHistoryConverter): siteId = 1 # Needs to match id entry in Sites database substitutions = { - 'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes - 'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8) + 'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes + 'LS' : u"\$|\u20AC|\xe2\x82\xac|", # legal currency symbols - Euro(cp1252, utf-8) + 'TAB' : u"-\u2013\s\da-zA-Z" } # Static regexes - re_GameInfo = re.compile('''.*\#(?P[0-9]+):\s + re_GameInfo = re.compile(u'''.*\#(?P[0-9]+):\s (?:(?P.+)\s\((?P\d+)\),\s)? .+ -\s(?P[%(LS)s]|)? @@ -54,7 +55,7 @@ class Fulltilt(HandHistoryConverter): (?:(?P.+)\s\((?P\d+)\),\s)? (Table|Match)\s (?PPlay\sChip\s|PC)? - (?P

[-\s\da-zA-Z]+)\s + (?P
[%(TAB)s]+)\s (\((?P.+)\)\s)?-\s [%(LS)s]?(?P[.0-9]+)/[%(LS)s]?(?P[.0-9]+)\s(Ante\s[%(LS)s]?(?P[.0-9]+)\s)?-\s [%(LS)s]?(?P[.0-9]+\sCap\s)? @@ -168,12 +169,14 @@ class Fulltilt(HandHistoryConverter): # Full Tilt Poker Game #10773265574: Table Butte (6 max) - $0.01/$0.02 - Pot Limit Hold'em - 21:33:46 ET - 2009/02/21 # Full Tilt Poker Game #9403951181: Table CR - tay - $0.05/$0.10 - No Limit Hold'em - 9:40:20 ET - 2008/12/09 # Full Tilt Poker Game #10809877615: Table Danville - $0.50/$1 Ante $0.10 - Limit Razz - 21:47:27 ET - 2009/02/23 + # Full Tilt Poker.fr Game #23057874034: Table Douai–Lens (6 max) - €0.01/€0.02 - No Limit Hold'em - 21:59:17 CET - 2010/08/13 info = {'type':'ring'} m = self.re_GameInfo.search(handText) - if not m: + if not m: return None mg = m.groupdict() + # translations from captured groups to our info strings limits = { 'No Limit':'nl', 'Pot Limit':'pl', 'Limit':'fl' } games = { # base, category @@ -205,6 +208,7 @@ class Fulltilt(HandHistoryConverter): if m is None: logging.info("Didn't match re_HandInfo") logging.info(hand.handText) + # Should this throw an exception? - CG return None hand.handid = m.group('HID') hand.tablename = m.group('TABLE') From 8b49f46d1cd5f85831db5583a8cc4bcba68c2bb6 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 18 Aug 2010 13:17:42 +0800 Subject: [PATCH 172/641] HHC: Correct error count for unmatched gametype regex --- pyfpdb/HandHistoryConverter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index eb1d7de8..34619c40 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -272,8 +272,8 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py. l = None if gametype is None: gametype = "unmatched" - # TODO: not ideal, just trying to not error. - # TODO: Need to count failed hands. + # TODO: not ideal, just trying to not error. Throw ParseException? + self.numErrors += 1 else: # See if gametype is supported. type = gametype['type'] From 4d0e438de1cfe2da530a5d8dd677b63d793e78fe Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 18 Aug 2010 16:36:16 +0800 Subject: [PATCH 173/641] Regression: Add FTP.fr hand history for testing. --- ...UR-0.01-0.02.201008.Weird.table.character.txt | Bin 0 -> 1900 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-6max-EUR-0.01-0.02.201008.Weird.table.character.txt diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-6max-EUR-0.01-0.02.201008.Weird.table.character.txt b/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-6max-EUR-0.01-0.02.201008.Weird.table.character.txt new file mode 100644 index 0000000000000000000000000000000000000000..6330c44b5e1dd83c621076a473cbac0572d0228f GIT binary patch literal 1900 zcmbtU%T60X5Ug{gobm%BaR8zO>|JaiH^d`3I0?e$5Jfqx*Ctr782KTHluzOtlT^*@ zcpu}9P@>g($J5i*)m=UP`_~zkxaDIoz=YogSLc}G24l>ygDd_TyhnnJI|dtw(5gHK z{MW`ii;!SQ44pe6#*$tWyfQuR++oh$Ep+*tasLt9T)pM{WLk_PjNR2b%59&BV$dT> z##h`vaOV~yY!WlePenF<2ZvR+Q0)=-r|h1xzN&f|Pwdv= z4TM_XU57}u8K2ydu^c6R85HqjwMy~p6=usbiW?!9hb&MliuwVOJJF9q} zSWkB!gsfXp^oN*#WoKOTdx#X@ET8fTRr88|>eYE*Rev>G)l1D*_05d+R-R*NTgjIF-vRp;w zno-@9^C+yMtPfUcar51%juHp;vYRZO{HA#A`?$nMKGOXQPZp{Vtgm|6b*69%6oa4q zf5D739i8PllVn7WBj&wndHEV`t*Wki)bHo|3G**VO_Qg5Ycz{f+pU`3DS0}Lsx^GW zQ(g_(tGPGLtM$`C5q;OWSgMP5)G39UXVhZKDN&8pH0i?0@qcmFPs!)2AlCl<1A>Mj AGynhq literal 0 HcmV?d00001 From f19afd656d460b4bbe9256382511aef4842ff37e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 02:22:42 +0200 Subject: [PATCH 174/641] rename dump result folder --- pyfpdb/regression-test-files/{results => dumps}/0001_empty_DB.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pyfpdb/regression-test-files/{results => dumps}/0001_empty_DB.txt (100%) diff --git a/pyfpdb/regression-test-files/results/0001_empty_DB.txt b/pyfpdb/regression-test-files/dumps/0001_empty_DB.txt similarity index 100% rename from pyfpdb/regression-test-files/results/0001_empty_DB.txt rename to pyfpdb/regression-test-files/dumps/0001_empty_DB.txt From c6180340550895dae1ffd8149fbc0598288f8b58 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 02:26:55 +0200 Subject: [PATCH 175/641] add new testfile, with expected dumpdiff from empty db --- ...-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt | 40 + ...-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt | 1627 +++++++++++++++++ 2 files changed, 1667 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt create mode 100644 pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt new file mode 100644 index 00000000..d06de0e5 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt @@ -0,0 +1,40 @@ +PokerStars Game #46290540537: Hold'em Limit ($0.05/$0.10 USD) - 2010/07/03 14:46:30 CET [2010/07/03 8:46:30 ET] +Table 'Elektra II' 10-max Seat #6 is the button +Seat 1: steffen780 ($2.77 in chips) +Seat 2: ialexiv ($1.93 in chips) +Seat 4: seregaserg ($2.80 in chips) +Seat 5: GREEN373 ($2.38 in chips) +Seat 6: Swann99 ($2.93 in chips) +Seat 7: ToolTheSheep ($1.22 in chips) +Seat 9: bigsergv ($2.26 in chips) +Seat 10: garikoitz_22 ($1.69 in chips) +ToolTheSheep: posts small blind $0.02 +Tora-Usagi: is sitting out +bigsergv: posts big blind $0.05 +Ted the Mad: sits out +*** HOLE CARDS *** +Dealt to steffen780 [8h 3c] +garikoitz_22: folds +steffen780: folds +ialexiv: folds +seregaserg: folds +GREEN373: folds +Swann99: folds +ToolTheSheep: folds +Uncalled bet ($0.03) returned to bigsergv +bigsergv collected $0.04 from pot +bigsergv: doesn't show hand +*** SUMMARY *** +Total pot $0.04 | Rake $0 +Seat 1: steffen780 folded before Flop (didn't bet) +Seat 2: ialexiv folded before Flop (didn't bet) +Seat 4: seregaserg folded before Flop (didn't bet) +Seat 5: GREEN373 folded before Flop (didn't bet) +Seat 6: Swann99 (button) folded before Flop (didn't bet) +Seat 7: ToolTheSheep (small blind) folded before Flop +Seat 9: bigsergv (big blind) collected ($0.04) +Seat 10: garikoitz_22 folded before Flop (didn't bet) + + + + diff --git a/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt b/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt new file mode 100644 index 00000000..e198c8ce --- /dev/null +++ b/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt @@ -0,0 +1,1627 @@ +17c17,29 +< empty table +--- +> id=1 +> siteId=2 +> currency=USD +> type=ring +> base=hold +> category=holdem +> limitType=fl +> hiLo=h +> smallBlind=2 +> bigBlind=5 +> smallBet=5 +> bigBet=10 +> +22c34,68 +< empty table +--- +> id=1 +> tableName=Elektra II +> siteHandNo=46290540537 +> tourneyId=None +> gametypeId=1 +> startTime=2010-07-03 12:46:30+00:00 +> importTime=2010-08-11 10:06:55.759561 +> seats=8 +> maxSeats=10 +> rush=None +> boardcard1=0 +> boardcard2=0 +> boardcard3=0 +> boardcard4=0 +> boardcard5=0 +> texture=None +> playersVpi=0 +> playersAtStreet1=0 +> playersAtStreet2=0 +> playersAtStreet3=0 +> playersAtStreet4=0 +> playersAtShowdown=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> street1Pot=0 +> street2Pot=0 +> street3Pot=0 +> street4Pot=0 +> showdownPot=0 +> comment=None +> commentTs=None +> +32c78,893 +< empty table +--- +> id=1 +> handId=1 +> playerId=8 +> startCash=169 +> position=5 +> seatNo=10 +> sitout=0 +> wentAllInOnStreet=None +> card1=0 +> card2=0 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=0 +> ante=None +> winnings=0 +> rake=0 +> totalProfit=0 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +> id=2 +> handId=1 +> playerId=3 +> startCash=280 +> position=2 +> seatNo=4 +> sitout=0 +> wentAllInOnStreet=None +> card1=0 +> card2=0 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=0 +> ante=None +> winnings=0 +> rake=0 +> totalProfit=0 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +> id=3 +> handId=1 +> playerId=6 +> startCash=122 +> position=S +> seatNo=7 +> sitout=0 +> wentAllInOnStreet=None +> card1=0 +> card2=0 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=0 +> ante=None +> winnings=0 +> rake=0 +> totalProfit=-2 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +> id=4 +> handId=1 +> playerId=5 +> startCash=293 +> position=0 +> seatNo=6 +> sitout=0 +> wentAllInOnStreet=None +> card1=0 +> card2=0 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=0 +> ante=None +> winnings=0 +> rake=0 +> totalProfit=0 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +> id=5 +> handId=1 +> playerId=7 +> startCash=226 +> position=B +> seatNo=9 +> sitout=0 +> wentAllInOnStreet=None +> card1=0 +> card2=0 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=0 +> ante=None +> winnings=4 +> rake=0 +> totalProfit=2 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=0 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +> id=6 +> handId=1 +> playerId=1 +> startCash=277 +> position=4 +> seatNo=1 +> sitout=0 +> wentAllInOnStreet=None +> card1=7 +> card2=28 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=20 +> ante=None +> winnings=0 +> rake=0 +> totalProfit=0 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +> id=7 +> handId=1 +> playerId=4 +> startCash=238 +> position=1 +> seatNo=5 +> sitout=0 +> wentAllInOnStreet=None +> card1=0 +> card2=0 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=0 +> ante=None +> winnings=0 +> rake=0 +> totalProfit=0 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +> id=8 +> handId=1 +> playerId=2 +> startCash=193 +> position=3 +> seatNo=2 +> sitout=0 +> wentAllInOnStreet=None +> card1=0 +> card2=0 +> card3=0 +> card4=0 +> card5=0 +> card6=0 +> card7=0 +> startCards=0 +> ante=None +> winnings=0 +> rake=0 +> totalProfit=0 +> comment=None +> commentTs=None +> tourneysPlayersId=None +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=0 +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=0 +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> actionString=None +> +35c896 +< Table HudCache +--- +> Table HudCache -> haven't checked this table +37c898,1593 +< empty table +--- +> id=1 +> gametypeId=1 +> playerId=1 +> activeSeats=8 +> position=M +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +> id=2 +> gametypeId=1 +> playerId=2 +> activeSeats=8 +> position=M +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +> id=3 +> gametypeId=1 +> playerId=3 +> activeSeats=8 +> position=M +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +> id=4 +> gametypeId=1 +> playerId=4 +> activeSeats=8 +> position=C +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +> id=5 +> gametypeId=1 +> playerId=5 +> activeSeats=8 +> position=D +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +> id=6 +> gametypeId=1 +> playerId=6 +> activeSeats=8 +> position=S +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=-2 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +> id=7 +> gametypeId=1 +> playerId=7 +> activeSeats=8 +> position=B +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=0 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=2 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +> id=8 +> gametypeId=1 +> playerId=8 +> activeSeats=8 +> position=E +> tourneyTypeId=None +> styleKey=d100703 +> HDs=1 +> wonWhenSeenStreet1=0.0 +> wonWhenSeenStreet2=None +> wonWhenSeenStreet3=None +> wonWhenSeenStreet4=None +> wonAtSD=0.0 +> street0VPI=0 +> street0Aggr=0 +> street0_3BChance=0 +> street0_3BDone=0 +> street0_4BChance=None +> street0_4BDone=None +> other3BStreet0=None +> other4BStreet0=None +> street1Seen=0 +> street2Seen=0 +> street3Seen=0 +> street4Seen=0 +> sawShowdown=0 +> street1Aggr=0 +> street2Aggr=0 +> street3Aggr=0 +> street4Aggr=0 +> otherRaisedStreet0=None +> otherRaisedStreet1=0 +> otherRaisedStreet2=0 +> otherRaisedStreet3=0 +> otherRaisedStreet4=0 +> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet1=0 +> foldToOtherRaisedStreet2=0 +> foldToOtherRaisedStreet3=0 +> foldToOtherRaisedStreet4=0 +> raiseFirstInChance=1 +> raisedFirstIn=0 +> foldBbToStealChance=0 +> foldedBbToSteal=0 +> foldSbToStealChance=0 +> foldedSbToSteal=0 +> street1CBChance=0 +> street1CBDone=0 +> street2CBChance=0 +> street2CBDone=0 +> street3CBChance=0 +> street3CBDone=0 +> street4CBChance=0 +> street4CBDone=0 +> foldToStreet1CBChance=0 +> foldToStreet1CBDone=0 +> foldToStreet2CBChance=0 +> foldToStreet2CBDone=0 +> foldToStreet3CBChance=0 +> foldToStreet3CBDone=0 +> foldToStreet4CBChance=0 +> foldToStreet4CBDone=0 +> totalProfit=0 +> street1CheckCallRaiseChance=0 +> street1CheckCallRaiseDone=0 +> street2CheckCallRaiseChance=0 +> street2CheckCallRaiseDone=0 +> street3CheckCallRaiseChance=0 +> street3CheckCallRaiseDone=0 +> street4CheckCallRaiseChance=0 +> street4CheckCallRaiseDone=0 +> street0Calls=0 +> street1Calls=0 +> street2Calls=0 +> street3Calls=0 +> street4Calls=0 +> street0Bets=0 +> street1Bets=0 +> street2Bets=0 +> street3Bets=0 +> street4Bets=0 +> street0Raises=0 +> street1Raises=0 +> street2Raises=0 +> street3Raises=0 +> street4Raises=0 +> +42c1598,1645 +< empty table +--- +> id=1 +> name=steffen780 +> siteId=2 +> comment=None +> commentTs=None +> +> id=2 +> name=ialexiv +> siteId=2 +> comment=None +> commentTs=None +> +> id=3 +> name=seregaserg +> siteId=2 +> comment=None +> commentTs=None +> +> id=4 +> name=GREEN373 +> siteId=2 +> comment=None +> commentTs=None +> +> id=5 +> name=Swann99 +> siteId=2 +> comment=None +> commentTs=None +> +> id=6 +> name=ToolTheSheep +> siteId=2 +> comment=None +> commentTs=None +> +> id=7 +> name=bigsergv +> siteId=2 +> comment=None +> commentTs=None +> +> id=8 +> name=garikoitz_22 +> siteId=2 +> comment=None +> commentTs=None +> From d5fb0b3c3697fdf86dbcaf72054756b632e88d5d Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 03:55:12 +0200 Subject: [PATCH 176/641] add wonWhenSeenStreet2-4 to DerivedStats' unimplemented section, store 0.0 by default --- pyfpdb/Database.py | 3 +++ pyfpdb/DerivedStats.py | 3 +++ pyfpdb/SQL.py | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 9204f271..cfcf856c 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1673,6 +1673,9 @@ class Database: pdata[p]['street3CBDone'], pdata[p]['street4CBDone'], pdata[p]['wonWhenSeenStreet1'], + pdata[p]['wonWhenSeenStreet2'], + pdata[p]['wonWhenSeenStreet3'], + pdata[p]['wonWhenSeenStreet4'], pdata[p]['street0Calls'], pdata[p]['street1Calls'], pdata[p]['street2Calls'], diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index 938e7b3b..eb6b6eda 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -77,6 +77,9 @@ class DerivedStats(): for i in range(1,5): self.handsplayers[player[1]]['foldToStreet%dCBChance' %i] = False self.handsplayers[player[1]]['foldToStreet%dCBDone' %i] = False + self.handsplayers[player[1]]['wonWhenSeenStreet2'] = 0.0 + self.handsplayers[player[1]]['wonWhenSeenStreet3'] = 0.0 + self.handsplayers[player[1]]['wonWhenSeenStreet4'] = 0.0 self.assembleHands(self.hand) self.assembleHandsPlayers(self.hand) diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 7f8c4108..2d42587f 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -4021,6 +4021,9 @@ class Sql: street3CBDone, street4CBDone, wonWhenSeenStreet1, + wonWhenSeenStreet2, + wonWhenSeenStreet3, + wonWhenSeenStreet4, street0Calls, street1Calls, street2Calls, @@ -4090,7 +4093,7 @@ class Sql: %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, - %s + %s, %s, %s, %s )""" ################################ From 8aecf117bb8f33014c72e4277a45606be479a0ae Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 04:01:44 +0200 Subject: [PATCH 177/641] add otherRaisedStreet0 and foldToOtherRaisedStreet0 with defualt false --- pyfpdb/Database.py | 2 ++ pyfpdb/DerivedStats.py | 2 ++ pyfpdb/SQL.py | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index cfcf856c..ec139c52 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1691,10 +1691,12 @@ class Database: pdata[p]['startCards'], pdata[p]['street0_3BChance'], pdata[p]['street0_3BDone'], + pdata[p]['otherRaisedStreet0'], pdata[p]['otherRaisedStreet1'], pdata[p]['otherRaisedStreet2'], pdata[p]['otherRaisedStreet3'], pdata[p]['otherRaisedStreet4'], + pdata[p]['foldToOtherRaisedStreet0'], pdata[p]['foldToOtherRaisedStreet1'], pdata[p]['foldToOtherRaisedStreet2'], pdata[p]['foldToOtherRaisedStreet3'], diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index eb6b6eda..4c896114 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -74,6 +74,8 @@ class DerivedStats(): self.handsplayers[player[1]]['foldToOtherRaisedStreet%d' %i] = False #FIXME - Everything below this point is incomplete. + self.handsplayers[player[1]]['otherRaisedStreet0'] = False + self.handsplayers[player[1]]['foldToOtherRaisedStreet0'] = False for i in range(1,5): self.handsplayers[player[1]]['foldToStreet%dCBChance' %i] = False self.handsplayers[player[1]]['foldToStreet%dCBDone' %i] = False diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 2d42587f..be5f6e99 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -4039,10 +4039,12 @@ class Sql: startCards, street0_3BChance, street0_3BDone, + otherRaisedStreet0, otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, + foldToOtherRaisedStreet0, foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, @@ -4093,7 +4095,8 @@ class Sql: %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, - %s, %s, %s, %s + %s, %s, %s, %s, %s, + %s )""" ################################ From 69c1c41b36e1acffc875646774e94610da138f82 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 04:09:24 +0200 Subject: [PATCH 178/641] add these stats to DB/DerivedStats/SQL: street0_4BChance/Done, other3/4BStreet0 --- pyfpdb/Database.py | 4 ++++ pyfpdb/DerivedStats.py | 6 ++++-- pyfpdb/SQL.py | 6 +++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index ec139c52..cd18147f 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1691,6 +1691,10 @@ class Database: pdata[p]['startCards'], pdata[p]['street0_3BChance'], pdata[p]['street0_3BDone'], + pdata[p]['street0_4BChance'], + pdata[p]['street0_4BDone'], + pdata[p]['other3BStreet0'], + pdata[p]['other4BStreet0'], pdata[p]['otherRaisedStreet0'], pdata[p]['otherRaisedStreet1'], pdata[p]['otherRaisedStreet2'], diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index 4c896114..dde8ecca 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -51,8 +51,8 @@ class DerivedStats(): self.handsplayers[player[1]]['position'] = 2 self.handsplayers[player[1]]['street0_3BChance'] = False self.handsplayers[player[1]]['street0_3BDone'] = False - self.handsplayers[player[1]]['street0_4BChance'] = False - self.handsplayers[player[1]]['street0_4BDone'] = False + self.handsplayers[player[1]]['street0_4BChance'] = False #FIXME: this might not actually be implemented + self.handsplayers[player[1]]['street0_4BDone'] = False #FIXME: this might not actually be implemented self.handsplayers[player[1]]['raiseFirstInChance'] = False self.handsplayers[player[1]]['raisedFirstIn'] = False self.handsplayers[player[1]]['foldBbToStealChance'] = False @@ -74,6 +74,8 @@ class DerivedStats(): self.handsplayers[player[1]]['foldToOtherRaisedStreet%d' %i] = False #FIXME - Everything below this point is incomplete. + self.handsplayers[player[1]]['other3BStreet0'] = False + self.handsplayers[player[1]]['other4BStreet0'] = False self.handsplayers[player[1]]['otherRaisedStreet0'] = False self.handsplayers[player[1]]['foldToOtherRaisedStreet0'] = False for i in range(1,5): diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index be5f6e99..79b27ce7 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -4039,6 +4039,10 @@ class Sql: startCards, street0_3BChance, street0_3BDone, + street0_4BChance, + street0_4BDone, + other3BStreet0, + other4BStreet0, otherRaisedStreet0, otherRaisedStreet1, otherRaisedStreet2, @@ -4096,7 +4100,7 @@ class Sql: %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, - %s + %s, %s, %s, %s, %s )""" ################################ From 2a673b8975a2a7d4e4cfca38544a94cca369ed1b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 04:24:38 +0200 Subject: [PATCH 179/641] assume bb=SB and BB=2*SB and store accordingly --- pyfpdb/Database.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index cd18147f..354536eb 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1886,7 +1886,8 @@ class Database: elif game['category'] in ['razz','27_3draw','badugi']: hilo = "l" tmp = self.insertGameTypes( (siteid, game['currency'], game['type'], game['base'], game['category'], game['limitType'], hilo, - int(Decimal(game['sb'])*100), int(Decimal(game['bb'])*100), 0, 0) ) + int(Decimal(game['sb'])*100), int(Decimal(game['bb'])*100), + int(Decimal(game['bb'])*100), int(Decimal(game['bb'])*200)) ) #FIXME: recognise currency return tmp[0] From 9dafddff4911c7b7d44ae1629deb39051ebc092c Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 05:58:22 +0200 Subject: [PATCH 180/641] add another test file --- .../LHE-USD-STT-5-20100607.allInPreflop.txt | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt diff --git a/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt b/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt new file mode 100644 index 00000000..9a35a552 --- /dev/null +++ b/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt @@ -0,0 +1,60 @@ +PokerStars Game #45201040897: Tournament #280631121, $5.00+$0.50 USD Hold'em Limit - Level III (50/100) - 2010/06/07 16:14:48 ET +Table '280631121 1' 9-max Seat #2 is the button +Seat 1: Slush11 (110 in chips) +Seat 2: zsoccerino (1430 in chips) is sitting out +Seat 3: 101ripcord (1250 in chips) +Seat 4: Lawwill (3300 in chips) +Seat 5: nakamurov (1890 in chips) +Seat 6: 67_fredf_67 (1425 in chips) +Seat 7: NICk.nico333 (1960 in chips) +Seat 8: steffen780 (1745 in chips) +Seat 9: PORCHES996 (390 in chips) +101ripcord: posts small blind 25 +Lawwill: posts big blind 50 +*** HOLE CARDS *** +Dealt to steffen780 [Td Th] +nakamurov: folds +67_fredf_67: calls 50 +NICk.nico333: folds +steffen780: raises 50 to 100 +PORCHES996: folds +Slush11: raises 10 to 110 and is all-in +zsoccerino: folds +101ripcord: calls 85 +Lawwill: folds +67_fredf_67: calls 60 +steffen780: calls 10 +*** FLOP *** [2c Qh 6c] +101ripcord: checks +67_fredf_67: checks +steffen780: bets 50 +101ripcord: calls 50 +67_fredf_67: folds +*** TURN *** [2c Qh 6c] [9s] +101ripcord: checks +steffen780: bets 100 +101ripcord: calls 100 +*** RIVER *** [2c Qh 6c 9s] [4d] +101ripcord: bets 100 +steffen780: calls 100 +*** SHOW DOWN *** +101ripcord: shows [9c 4c] (two pair, Nines and Fours) +steffen780: mucks hand +101ripcord collected 500 from side pot +Slush11: mucks hand +101ripcord collected 490 from main pot +*** SUMMARY *** +Total pot 990 Main pot 490. Side pot 500. | Rake 0 +Board [2c Qh 6c 9s 4d] +Seat 1: Slush11 mucked [9d As] +Seat 2: zsoccerino (button) folded before Flop (didn't bet) +Seat 3: 101ripcord (small blind) showed [9c 4c] and won (990) with two pair, Nines and Fours +Seat 4: Lawwill (big blind) folded before Flop +Seat 5: nakamurov folded before Flop (didn't bet) +Seat 6: 67_fredf_67 folded on the Flop +Seat 7: NICk.nico333 folded before Flop (didn't bet) +Seat 8: steffen780 mucked [Td Th] +Seat 9: PORCHES996 folded before Flop (didn't bet) + + + From 13ce5117c8d6793fcd76895af606849d32332797 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 05:59:00 +0200 Subject: [PATCH 181/641] add wonWhenSeenStreet2-4 storing to HudCache --- pyfpdb/SQL.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 79b27ce7..884c6bff 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -3057,6 +3057,9 @@ class Sql: ,styleKey ,HDs ,wonWhenSeenStreet1 + ,wonWhenSeenStreet2 + ,wonWhenSeenStreet3 + ,wonWhenSeenStreet4 ,wonAtSD ,street0VPI ,street0Aggr @@ -3147,6 +3150,9 @@ class Sql: ,date_format(h.startTime, 'd%y%m%d') ,count(1) ,sum(wonWhenSeenStreet1) + ,sum(wonWhenSeenStreet2) + ,sum(wonWhenSeenStreet3) + ,sum(wonWhenSeenStreet4) ,sum(wonAtSD) ,sum(street0VPI) ,sum(street0Aggr) @@ -3237,6 +3243,9 @@ class Sql: ,styleKey ,HDs ,wonWhenSeenStreet1 + ,wonWhenSeenStreet2 + ,wonWhenSeenStreet3 + ,wonWhenSeenStreet4 ,wonAtSD ,street0VPI ,street0Aggr @@ -3327,6 +3336,9 @@ class Sql: ,'d' || to_char(h.startTime, 'YYMMDD') ,count(1) ,sum(wonWhenSeenStreet1) + ,sum(wonWhenSeenStreet2) + ,sum(wonWhenSeenStreet3) + ,sum(wonWhenSeenStreet4) ,sum(wonAtSD) ,sum(CAST(street0VPI as integer)) ,sum(CAST(street0Aggr as integer)) @@ -3417,6 +3429,9 @@ class Sql: ,styleKey ,HDs ,wonWhenSeenStreet1 + ,wonWhenSeenStreet2 + ,wonWhenSeenStreet3 + ,wonWhenSeenStreet4 ,wonAtSD ,street0VPI ,street0Aggr @@ -3507,6 +3522,9 @@ class Sql: ,'d' || substr(strftime('%Y%m%d', h.startTime),3,7) ,count(1) ,sum(wonWhenSeenStreet1) + ,sum(wonWhenSeenStreet2) + ,sum(wonWhenSeenStreet3) + ,sum(wonWhenSeenStreet4) ,sum(wonAtSD) ,sum(CAST(street0VPI as integer)) ,sum(CAST(street0Aggr as integer)) @@ -3618,6 +3636,9 @@ class Sql: foldToOtherRaisedStreet3, foldToOtherRaisedStreet4, wonWhenSeenStreet1, + wonWhenSeenStreet2, + wonWhenSeenStreet3, + wonWhenSeenStreet4, wonAtSD, raiseFirstInChance, raisedFirstIn, @@ -3707,6 +3728,9 @@ class Sql: foldToOtherRaisedStreet3=foldToOtherRaisedStreet3+%s, foldToOtherRaisedStreet4=foldToOtherRaisedStreet4+%s, wonWhenSeenStreet1=wonWhenSeenStreet1+%s, + wonWhenSeenStreet2=wonWhenSeenStreet2+%s, + wonWhenSeenStreet3=wonWhenSeenStreet3+%s, + wonWhenSeenStreet4=wonWhenSeenStreet4+%s, wonAtSD=wonAtSD+%s, raiseFirstInChance=raiseFirstInChance+%s, raisedFirstIn=raisedFirstIn+%s, From 97dcc4561ba7232cc0fb155cc2ca2813990e7ad4 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 06:05:59 +0200 Subject: [PATCH 182/641] add (foldTo)otherRaisedStreet0 storing to HudCache --- pyfpdb/SQL.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 884c6bff..88b8455f 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -3074,10 +3074,12 @@ class Sql: ,street2Aggr ,street3Aggr ,street4Aggr + ,otherRaisedStreet0 ,otherRaisedStreet1 ,otherRaisedStreet2 ,otherRaisedStreet3 ,otherRaisedStreet4 + ,foldToOtherRaisedStreet0 ,foldToOtherRaisedStreet1 ,foldToOtherRaisedStreet2 ,foldToOtherRaisedStreet3 @@ -3167,10 +3169,12 @@ class Sql: ,sum(street2Aggr) ,sum(street3Aggr) ,sum(street4Aggr) + ,sum(otherRaisedStreet0) ,sum(otherRaisedStreet1) ,sum(otherRaisedStreet2) ,sum(otherRaisedStreet3) ,sum(otherRaisedStreet4) + ,sum(foldToOtherRaisedStreet0) ,sum(foldToOtherRaisedStreet1) ,sum(foldToOtherRaisedStreet2) ,sum(foldToOtherRaisedStreet3) @@ -3260,10 +3264,12 @@ class Sql: ,street2Aggr ,street3Aggr ,street4Aggr + ,otherRaisedStreet0 ,otherRaisedStreet1 ,otherRaisedStreet2 ,otherRaisedStreet3 ,otherRaisedStreet4 + ,foldToOtherRaisedStreet0 ,foldToOtherRaisedStreet1 ,foldToOtherRaisedStreet2 ,foldToOtherRaisedStreet3 @@ -3353,10 +3359,12 @@ class Sql: ,sum(CAST(street2Aggr as integer)) ,sum(CAST(street3Aggr as integer)) ,sum(CAST(street4Aggr as integer)) + ,sum(CAST(otherRaisedStreet0 as integer)) ,sum(CAST(otherRaisedStreet1 as integer)) ,sum(CAST(otherRaisedStreet2 as integer)) ,sum(CAST(otherRaisedStreet3 as integer)) ,sum(CAST(otherRaisedStreet4 as integer)) + ,sum(CAST(foldToOtherRaisedStreet0 as integer)) ,sum(CAST(foldToOtherRaisedStreet1 as integer)) ,sum(CAST(foldToOtherRaisedStreet2 as integer)) ,sum(CAST(foldToOtherRaisedStreet3 as integer)) @@ -3446,10 +3454,12 @@ class Sql: ,street2Aggr ,street3Aggr ,street4Aggr + ,otherRaisedStreet0 ,otherRaisedStreet1 ,otherRaisedStreet2 ,otherRaisedStreet3 ,otherRaisedStreet4 + ,foldToOtherRaisedStreet0 ,foldToOtherRaisedStreet1 ,foldToOtherRaisedStreet2 ,foldToOtherRaisedStreet3 @@ -3539,10 +3549,12 @@ class Sql: ,sum(CAST(street2Aggr as integer)) ,sum(CAST(street3Aggr as integer)) ,sum(CAST(street4Aggr as integer)) + ,sum(CAST(otherRaisedStreet0 as integer)) ,sum(CAST(otherRaisedStreet1 as integer)) ,sum(CAST(otherRaisedStreet2 as integer)) ,sum(CAST(otherRaisedStreet3 as integer)) ,sum(CAST(otherRaisedStreet4 as integer)) + ,sum(CAST(foldToOtherRaisedStreet0 as integer)) ,sum(CAST(foldToOtherRaisedStreet1 as integer)) ,sum(CAST(foldToOtherRaisedStreet2 as integer)) ,sum(CAST(foldToOtherRaisedStreet3 as integer)) @@ -3627,10 +3639,12 @@ class Sql: street2Aggr, street3Aggr, street4Aggr, + otherRaisedStreet0, otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, + foldToOtherRaisedStreet0, foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, @@ -3719,10 +3733,12 @@ class Sql: street2Aggr=street2Aggr+%s, street3Aggr=street3Aggr+%s, street4Aggr=street4Aggr+%s, + otherRaisedStreet0=otherRaisedStreet0+%s, otherRaisedStreet1=otherRaisedStreet1+%s, otherRaisedStreet2=otherRaisedStreet2+%s, otherRaisedStreet3=otherRaisedStreet3+%s, otherRaisedStreet4=otherRaisedStreet4+%s, + foldToOtherRaisedStreet0=foldToOtherRaisedStreet0+%s, foldToOtherRaisedStreet1=foldToOtherRaisedStreet1+%s, foldToOtherRaisedStreet2=foldToOtherRaisedStreet2+%s, foldToOtherRaisedStreet3=foldToOtherRaisedStreet3+%s, From 0c939633787763b7b6d90fdc62780dc5238fe4ae Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 06:14:12 +0200 Subject: [PATCH 183/641] add these to HudCache storing: street0_4BChance/Done, other3/4BStreet0 --- pyfpdb/SQL.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 88b8455f..6afb1d2a 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -3065,6 +3065,10 @@ class Sql: ,street0Aggr ,street0_3BChance ,street0_3BDone + ,street0_4BChance + ,street0_4BDone + ,other3BStreet0 + ,other4BStreet0 ,street1Seen ,street2Seen ,street3Seen @@ -3160,6 +3164,10 @@ class Sql: ,sum(street0Aggr) ,sum(street0_3BChance) ,sum(street0_3BDone) + ,sum(street0_4BChance) + ,sum(street0_4BDone) + ,sum(other3BStreet0) + ,sum(other4BStreet0) ,sum(street1Seen) ,sum(street2Seen) ,sum(street3Seen) @@ -3255,6 +3263,10 @@ class Sql: ,street0Aggr ,street0_3BChance ,street0_3BDone + ,street0_4BChance + ,street0_4BDone + ,other3BStreet0 + ,other4BStreet0 ,street1Seen ,street2Seen ,street3Seen @@ -3350,6 +3362,10 @@ class Sql: ,sum(CAST(street0Aggr as integer)) ,sum(CAST(street0_3BChance as integer)) ,sum(CAST(street0_3BDone as integer)) + ,sum(CAST(street0_4BChance as integer)) + ,sum(CAST(street0_4BDone as integer)) + ,sum(CAST(other3BStreet0 as integer)) + ,sum(CAST(other4BStreet0 as integer)) ,sum(CAST(street1Seen as integer)) ,sum(CAST(street2Seen as integer)) ,sum(CAST(street3Seen as integer)) @@ -3445,6 +3461,10 @@ class Sql: ,street0Aggr ,street0_3BChance ,street0_3BDone + ,street0_4BChance + ,street0_4BDone + ,other3BStreet0 + ,other4BStreet0 ,street1Seen ,street2Seen ,street3Seen @@ -3540,6 +3560,10 @@ class Sql: ,sum(CAST(street0Aggr as integer)) ,sum(CAST(street0_3BChance as integer)) ,sum(CAST(street0_3BDone as integer)) + ,sum(CAST(street0_4BChance as integer)) + ,sum(CAST(street0_4BDone as integer)) + ,sum(CAST(other3BStreet0 as integer)) + ,sum(CAST(other4BStreet0 as integer)) ,sum(CAST(street1Seen as integer)) ,sum(CAST(street2Seen as integer)) ,sum(CAST(street3Seen as integer)) @@ -3630,6 +3654,10 @@ class Sql: street0Aggr, street0_3BChance, street0_3BDone, + street0_4BChance, + street0_4BDone, + other3BStreet0, + other4BStreet0, street1Seen, street2Seen, street3Seen, @@ -3715,7 +3743,8 @@ class Sql: %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, - %s)""" + %s, %s, %s, %s, %s, + %s, %s, %s, %s, %s)""" self.query['update_hudcache'] = """ UPDATE HudCache SET From 26df39c46932a35a320f658021d35c17f175432e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 06:37:59 +0200 Subject: [PATCH 184/641] checked hudcache dump --- ...-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt | 166 +++++++++--------- 1 file changed, 81 insertions(+), 85 deletions(-) diff --git a/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt b/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt index e198c8ce..5da42951 100644 --- a/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt +++ b/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt @@ -23,7 +23,7 @@ > tourneyId=None > gametypeId=1 > startTime=2010-07-03 12:46:30+00:00 -> importTime=2010-08-11 10:06:55.759561 +> importTime=ignore > seats=8 > maxSeats=10 > rush=None @@ -871,10 +871,6 @@ > street4Raises=0 > actionString=None > -35c896 -< Table HudCache ---- -> Table HudCache -> haven't checked this table 37c898,1593 < empty table --- @@ -884,21 +880,21 @@ > activeSeats=8 > position=M > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -908,12 +904,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 @@ -971,21 +967,21 @@ > activeSeats=8 > position=M > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -995,12 +991,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 @@ -1058,21 +1054,21 @@ > activeSeats=8 > position=M > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -1082,12 +1078,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 @@ -1145,21 +1141,21 @@ > activeSeats=8 > position=C > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -1169,12 +1165,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 @@ -1232,21 +1228,21 @@ > activeSeats=8 > position=D > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -1256,12 +1252,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 @@ -1319,21 +1315,21 @@ > activeSeats=8 > position=S > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -1343,12 +1339,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 @@ -1406,21 +1402,21 @@ > activeSeats=8 > position=B > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -1430,12 +1426,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 @@ -1493,21 +1489,21 @@ > activeSeats=8 > position=E > tourneyTypeId=None -> styleKey=d100703 +> styleKey=ignore > HDs=1 > wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=None -> wonWhenSeenStreet3=None -> wonWhenSeenStreet4=None +> wonWhenSeenStreet2=0.0 +> wonWhenSeenStreet3=0.0 +> wonWhenSeenStreet4=0.0 > wonAtSD=0.0 > street0VPI=0 > street0Aggr=0 > street0_3BChance=0 > street0_3BDone=0 -> street0_4BChance=None -> street0_4BDone=None -> other3BStreet0=None -> other4BStreet0=None +> street0_4BChance=0 +> street0_4BDone=0 +> other3BStreet0=0 +> other4BStreet0=0 > street1Seen=0 > street2Seen=0 > street3Seen=0 @@ -1517,12 +1513,12 @@ > street2Aggr=0 > street3Aggr=0 > street4Aggr=0 -> otherRaisedStreet0=None +> otherRaisedStreet0=0 > otherRaisedStreet1=0 > otherRaisedStreet2=0 > otherRaisedStreet3=0 > otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=None +> foldToOtherRaisedStreet0=0 > foldToOtherRaisedStreet1=0 > foldToOtherRaisedStreet2=0 > foldToOtherRaisedStreet3=0 From f191e5d77c873d5c1b92181a38082c45742addda Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 07:23:42 +0200 Subject: [PATCH 185/641] Revert "remove useless ongametofpdb file" its not actually useless This reverts commit a0f9d0ddee18486d4564727e487e4e9e2e9d8de4. --- pyfpdb/OnGameToFpdb.py | 242 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100755 pyfpdb/OnGameToFpdb.py diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py new file mode 100755 index 00000000..80d8d646 --- /dev/null +++ b/pyfpdb/OnGameToFpdb.py @@ -0,0 +1,242 @@ +#!/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 sys +import Configuration +from HandHistoryConverter import * + +# OnGame HH Format + +#Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 +#Table Kuopio, 20 Sep 2008 11:59 PM + +#Seat 1: .Lucchess ($4.17 in chips) +#Seat 3: Gloff1 ($108 in chips) +#Seat 4: far a ($13.54 in chips) +#Seat 5: helander2222 ($49.77 in chips) +#Seat 6: lopllopl ($62.06 in chips) +#Seat 7: crazyhorse6 ($101.91 in chips) +#Seat 8: peeci ($25.02 in chips) +#Seat 9: Manuelhertz ($49 in chips) +#Seat 10: Eurolll ($58.25 in chips) +#ANTES/BLINDS +#helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). + +#PRE-FLOP +#crazyhorse6 folds, peeci folds, Manuelhertz folds, Eurolll calls $0.50, .Lucchess calls $0.50, Gloff1 folds, far a folds, helander2222 folds, lopllopl checks. + +#FLOP [board cards AH,8H,KH ] +#lopllopl checks, Eurolll checks, .Lucchess checks. + +#TURN [board cards AH,8H,KH,6S ] +#lopllopl checks, Eurolll checks, .Lucchess checks. + +#RIVER [board cards AH,8H,KH,6S,8S ] +#lopllopl checks, Eurolll bets $1.25, .Lucchess folds, lopllopl folds. + +#SHOWDOWN +#Eurolll wins $2.92. + +#SUMMARY +#Dealer: far a +#Pot: $3, (including rake: $0.08) +#.Lucchess, loses $0.50 +#Gloff1, loses $0 +#far a, loses $0 +#helander2222, loses $0.25 +#lopllopl, loses $0.50 +#crazyhorse6, loses $0 +#peeci, loses $0 +#Manuelhertz, loses $0 +#Eurolll, bets $1.75, collects $2.92, net $1.17 + + +class OnGame(HandHistoryConverter): + def __init__(self, config, file): + print "Initialising OnGame converter class" + HandHistoryConverter.__init__(self, config, file, sitename="OnGame") # Call super class init. + self.sitename = "OnGame" + self.setFileType("text", "cp1252") + self.siteId = 5 # Needs to match id entry in Sites database + #self.rexx.setGameInfoRegex('.*Blinds \$?(?P[.0-9]+)/\$?(?P[.0-9]+)') + self.rexx.setSplitHandRegex('\n\n\n+') + + #Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 + #Table Kuopio, 20 Sep 2008 11:59 PM + self.rexx.setHandInfoRegex(r"Texas Hold'em \$?(?P[.0-9]+)-\$?(?P[.0-9]+) NL \(real money\), hand #(?P[-A-Z\d]+)\nTable\ (?P
[\' \w]+), (?P\d\d \w+ \d\d\d\d \d\d:\d\d (AM|PM))") + # SB BB HID TABLE DAY MON YEAR HR12 MIN AMPM + + self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P.*)\n') + + #Seat 1: .Lucchess ($4.17 in chips) + self.rexx.setPlayerInfoRegex('Seat (?P[0-9]+): (?P.*) \((\$(?P[.0-9]+) in chips)\)') + + #ANTES/BLINDS + #helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). + self.rexx.setPostSbRegex('(?P.*) posts blind \(\$?(?P[.0-9]+)\), ') + self.rexx.setPostBbRegex('\), (?P.*) posts blind \(\$?(?P[.0-9]+)\).') + self.rexx.setPostBothRegex('.*\n(?P.*): posts small \& big blinds \[\$? (?P[.0-9]+)') + self.rexx.setHeroCardsRegex('.*\nDealt\sto\s(?P.*)\s\[ (?P.*) \]') + + #lopllopl checks, Eurolll checks, .Lucchess checks. + self.rexx.setActionStepRegex('(, )?(?P.*?)(?P bets| checks| raises| calls| folds)( \$(?P\d*\.?\d*))?( and is all-in)?') + + #Uchilka shows [ KC,JD ] + self.rexx.setShowdownActionRegex('(?P.*) shows \[ (?P.+) \]') + + # TODO: read SUMMARY correctly for collected pot stuff. + #Uchilka, bets $11.75, collects $23.04, net $11.29 + self.rexx.setCollectPotRegex('(?P.*), bets.+, collects \$(?P\d*\.?\d*), net.* ') + self.rexx.sits_out_re = re.compile('(?P.*) sits out') + self.rexx.compileRegexes() + + def readSupportedGames(self): + pass + + def determineGameType(self): + # Cheating with this regex, only support nlhe at the moment + gametype = ["ring", "hold", "nl"] + + m = self.rexx.hand_info_re.search(self.obs) + gametype = gametype + [m.group('SB')] + gametype = gametype + [m.group('BB')] + + return gametype + + def readHandInfo(self, hand): + m = self.rexx.hand_info_re.search(hand.string) + hand.handid = m.group('HID') + hand.tablename = m.group('TABLE') + #hand.buttonpos = self.rexx.button_re.search(hand.string).group('BUTTONPNAME') +# These work, but the info is already in the Hand class - should be used for tourneys though. +# m.group('SB') +# m.group('BB') +# m.group('GAMETYPE') + +# Believe Everleaf time is GMT/UTC, no transation necessary +# Stars format (Nov 10 2008): 2008/11/07 12:38:49 CET [2008/11/07 7:38:49 ET] +# or : 2008/11/07 12:38:49 ET +# Not getting it in my HH files yet, so using +# 2008/11/10 3:58:52 ET +#TODO: Do conversion from GMT to ET +#TODO: Need some date functions to convert to different timezones (Date::Manip for perl rocked for this) + + hand.startTime = time.strptime(m.group('DATETIME'), "%d %b %Y %I:%M %p") + #hand.starttime = "%d/%02d/%02d %d:%02d:%02d ET" %(int(m.group('YEAR')), int(m.group('MON')), int(m.group('DAY')), + #int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC'))) + + def readPlayerStacks(self, hand): + m = self.rexx.player_info_re.finditer(hand.string) + players = [] + for a in m: + 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. + #m = re.search('(\*\* Dealing down cards \*\*\n)(?P.*?\n\*\*)?( Dealing Flop \*\* \[ (?P\S\S), (?P\S\S), (?P\S\S) \])?(?P.*?\*\*)?( Dealing Turn \*\* \[ (?P\S\S) \])?(?P.*?\*\*)?( Dealing River \*\* \[ (?P\S\S) \])?(?P.*)', hand.string,re.DOTALL) + + m = re.search(r"PRE-FLOP(?P.+(?=FLOP)|.+(?=SHOWDOWN))" + r"(FLOP (?P\[board cards .+ \].+(?=TURN)|.+(?=SHOWDOWN)))?" + r"(TURN (?P\[board cards .+ \].+(?=RIVER)|.+(?=SHOWDOWN)))?" + r"(RIVER (?P\[board cards .+ \].+(?=SHOWDOWN)))?", hand.string,re.DOTALL) + + hand.addStreets(m) + + + def readCommunityCards(self, hand, street): + self.rexx.board_re = re.compile(r"\[board cards (?P.+) \]") + print hand.streets.group(street) + if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP) + m = self.rexx.board_re.search(hand.streets.group(street)) + hand.setCommunityCards(street, m.group('CARDS').split(',')) + + def readBlinds(self, hand): + try: + m = self.rexx.small_blind_re.search(hand.string) + hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB')) + except: # no small blind + hand.addBlind(None, None, None) + for a in self.rexx.big_blind_re.finditer(hand.string): + hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB')) + for a in self.rexx.both_blinds_re.finditer(hand.string): + hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB')) + + def readHeroCards(self, hand): + m = self.rexx.hero_cards_re.search(hand.string) + if(m == None): + #Not involved in hand + hand.involved = False + else: + hand.hero = m.group('PNAME') + # "2c, qh" -> set(["2c","qc"]) + # Also works with Omaha hands. + cards = m.group('CARDS') + cards = set(cards.split(',')) + hand.addHoleCards(cards, m.group('PNAME')) + + def readAction(self, hand, street): + m = self.rexx.action_re.finditer(hand.streets.group(street)) + for action in m: + if action.group('ATYPE') == ' raises': + hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') ) + elif action.group('ATYPE') == ' calls': + hand.addCall( street, action.group('PNAME'), action.group('BET') ) + elif action.group('ATYPE') == ' bets': + hand.addBet( street, action.group('PNAME'), action.group('BET') ) + elif action.group('ATYPE') == ' folds': + hand.addFold( street, action.group('PNAME')) + elif action.group('ATYPE') == ' checks': + hand.addCheck( street, action.group('PNAME')) + else: + print "DEBUG: unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),) + #hand.actions[street] += [[action.group('PNAME'), action.group('ATYPE')]] + # TODO: Everleaf does not record uncalled bets. + + def readShowdownActions(self, hand): + for shows in self.rexx.showdown_action_re.finditer(hand.string): + cards = shows.group('CARDS') + cards = set(cards.split(',')) + hand.addShownCards(cards, shows.group('PNAME')) + + def readCollectPot(self,hand): + for m in self.rexx.collect_pot_re.finditer(hand.string): + hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT')) + + def readShownCards(self,hand): + return + #for m in self.rexx.collect_pot_re.finditer(hand.string): + #if m.group('CARDS') is not None: + #cards = m.group('CARDS') + #cards = set(cards.split(',')) + #hand.addShownCards(cards=None, player=m.group('PNAME'), holeandboard=cards) + + + + +if __name__ == "__main__": + c = Configuration.Config() + if len(sys.argv) == 1: + testfile = "regression-test-files/ongame/nlhe/ong NLH handhq_0.txt" + else: + testfile = sys.argv[1] + e = OnGame(c, testfile) + e.processFile() + print str(e) From 4f854c5c35a8d2f8a0bfd4d4bb34d82788100cf0 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 07:34:37 +0200 Subject: [PATCH 186/641] add comment about non-standard structures for sbet/bbet --- pyfpdb/Database.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 354536eb..9b1b962b 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1887,7 +1887,7 @@ class Database: hilo = "l" tmp = self.insertGameTypes( (siteid, game['currency'], game['type'], game['base'], game['category'], game['limitType'], hilo, int(Decimal(game['sb'])*100), int(Decimal(game['bb'])*100), - int(Decimal(game['bb'])*100), int(Decimal(game['bb'])*200)) ) + int(Decimal(game['bb'])*100), int(Decimal(game['bb'])*200)) ) #TODO: this wont work for non-standard structures #FIXME: recognise currency return tmp[0] From 924e155b450a0081ab324a5137aafcbe03faf2d0 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 18:23:26 +0800 Subject: [PATCH 187/641] Database: Add optional argument for pprinting the player data. --- pyfpdb/Database.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 9b1b962b..797c4e28 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1633,8 +1633,13 @@ class Database: return self.get_last_insert_id(c) # def storeHand - def storeHandsPlayers(self, hid, pids, pdata): + def storeHandsPlayers(self, hid, pids, pdata, printdata = False): #print "DEBUG: %s %s %s" %(hid, pids, pdata) + if printdata: + import pprint + pp = pprint.PrettyPrinter(indent=4) + pp.pprint(pdata) + inserts = [] for p in pdata: inserts.append( (hid, From 0fab203a535b497c709f15b748bad9ccc5ab9965 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 18:25:26 +0800 Subject: [PATCH 188/641] Importer: Add utility functions for regression testing setPrintTestData: Indicate you would like to print test data when importing setFakeCacheHHC: Indicate you want to access the HHC after an import run getCachedHHC: Retrieve HHC Also modified the main import loop to pass self.settings['testData'] to the database insert and records the HHC if requested --- pyfpdb/fpdb_import.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index 03fbbe48..a1835830 100755 --- a/pyfpdb/fpdb_import.py +++ b/pyfpdb/fpdb_import.py @@ -102,6 +102,7 @@ class Importer: self.settings.setdefault("dropIndexes", "don't drop") self.settings.setdefault("dropHudCache", "don't drop") self.settings.setdefault("starsArchive", False) + self.settings.setdefault("testData", False) self.writeq = None self.database = Database.Database(self.config, sql = self.sql) @@ -146,6 +147,15 @@ class Importer: def setStarsArchive(self, value): self.settings['starsArchive'] = value + def setPrintTestData(self, value): + self.settings['testData'] = value + + def setFakeCacheHHC(self, value): + self.settings['cacheHHC'] = value + + def getCachedHHC(self): + return self.handhistoryconverter + # def setWatchTime(self): # self.updated = time() @@ -456,7 +466,7 @@ class Importer: if hand is not None: hand.prepInsert(self.database) try: - hand.insert(self.database) + hand.insert(self.database, printtest = self.settings['testData']) except Exceptions.FpdbHandDuplicate: duplicates += 1 else: @@ -485,6 +495,10 @@ class Importer: stored = getattr(hhc, 'numHands') stored -= duplicates stored -= errors + # Really ugly hack to allow testing Hands within the HHC from someone + # with only an Importer objec + if self.settings['cacheHHC']: + self.handhistoryconverter = hhc else: # conversion didn't work # TODO: appropriate response? From 109ad292c0ce51ef0fa6f405791274c044af0215 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 18:28:10 +0800 Subject: [PATCH 189/641] Hand: Add optional argument for printing test data And pass the argument on too Database --- pyfpdb/Hand.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 1d390378..c32f9f37 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -251,7 +251,7 @@ dealt whether they were seen in a 'dealt to' line db.commit() #end def prepInsert - def insert(self, db): + def insert(self, db, printtest = False): """ Function to insert Hand into database Should not commit, and do minimal selects. Callers may want to cache commits db: a connected Database object""" @@ -271,7 +271,7 @@ db: a connected Database object""" hh['seats'] = len(self.dbid_pids) self.dbid_hands = db.storeHand(hh) - db.storeHandsPlayers(self.dbid_hands, self.dbid_pids, self.stats.getHandsPlayers()) + db.storeHandsPlayers(self.dbid_hands, self.dbid_pids, self.stats.getHandsPlayers(), printdata = printtest) # TODO HandsActions - all actions for all players for all streets - self.actions # HudCache data can be generated from HandsActions (HandsPlayers?) else: From fbcf987d97ee713c7ce93289e39117547c8da89f Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 18:29:10 +0800 Subject: [PATCH 190/641] BulkImport: Add command line option to generate test data --- pyfpdb/GuiBulkImport.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyfpdb/GuiBulkImport.py b/pyfpdb/GuiBulkImport.py index 9b88a12f..72e5e463 100755 --- a/pyfpdb/GuiBulkImport.py +++ b/pyfpdb/GuiBulkImport.py @@ -356,6 +356,8 @@ def main(argv=None): help=_("Print some useful one liners")) parser.add_option("-s", "--starsarchive", action="store_true", dest="starsArchive", default=False, help=_("Do the required conversion for Stars Archive format (ie. as provided by support")) + parser.add_option("-t", "--testdata", action="store_true", dest="testData", default=False, + help=_("Output the pprinted version of the HandsPlayer hash for regresion testing")) (options, argv) = parser.parse_args(args = argv) if options.usage == True: @@ -401,6 +403,8 @@ def main(argv=None): importer.setCallHud(False) if options.starsArchive: importer.setStarsArchive(True) + if options.testData: + importer.setPrintTestData(True) (stored, dups, partial, errs, ttime) = importer.runImport() importer.clearFileList() print _('GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec')\ From bb6225f80cc5da7f918b8ae8456195e3b0387495 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 18:30:12 +0800 Subject: [PATCH 191/641] NEW: Add regression test utility for HandsPlayers --- pyfpdb/TestHandsPlayers.py | 90 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 pyfpdb/TestHandsPlayers.py diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py new file mode 100644 index 00000000..15925e2e --- /dev/null +++ b/pyfpdb/TestHandsPlayers.py @@ -0,0 +1,90 @@ +import sys +import os +import codecs +import pprint +import PokerStarsToFpdb +from Hand import * +import Configuration +import Database +import SQL +import fpdb_import + +def error_report( filename, hand, stat, ghash, testhash): + print "Regression Test Error:" + print "\tFile: %s" % filename + print "\tStat: %s" % stat + +def compare(leaf, importer): + filename = leaf + #print "DEBUG: fileanme: %s" % filename + + # Test if this is a hand history file + if filename.endswith('.txt'): + # test if there is a .hp version of the file + importer.addBulkImportImportFileOrDir(filename, site="PokerStars") + (stored, dups, partial, errs, ttime) = importer.runImport() + if os.path.isfile(filename + '.hp'): + # Compare them + hashfilename = filename + '.hp' + + in_fh = codecs.open(hashfilename, 'r', 'utf8') + whole_file = in_fh.read() + in_fh.close() + + testhash = eval(whole_file) + + hhc = importer.getCachedHHC() + handlist = hhc.getProcessedHands() + #We _really_ only want to deal with a single hand here. + for hand in handlist: + ghash = hand.stats.getHandsPlayers() + for p in ghash: + pstat = ghash[p] + teststat = testhash[p] + for stat in pstat: + if pstat[stat] == teststat[stat]: + # The stats match - continue + pass + else: + # Stats don't match - Doh! + error_report(filename, hand, stat, ghash, testhash) + + importer.clearFileList() + + + +def walk_testfiles(dir, function, importer): + """Walks a directory, and executes a callback on each file """ + dir = os.path.abspath(dir) + for file in [file for file in os.listdir(dir) if not file in [".",".."]]: + nfile = os.path.join(dir,file) + if os.path.isdir(nfile): + walk_testfiles(nfile, compare, importer) + else: + compare(nfile, importer) + +def main(argv=None): + if argv is None: + argv = sys.argv[1:] + + config = Configuration.Config(file = "HUD_config.test.xml") + db = Database.Database(config) + sql = SQL.Sql(db_server = 'sqlite') + settings = {} + settings.update(config.get_db_parameters()) + settings.update(config.get_tv_parameters()) + settings.update(config.get_import_parameters()) + settings.update(config.get_default_paths()) + db.recreate_tables() + importer = fpdb_import.Importer(False, settings, config) + importer.setDropIndexes("don't drop") + importer.setFailOnError(True) + importer.setThreads(-1) + importer.setCallHud(False) + importer.setFakeCacheHHC(True) + + walk_testfiles("regression-test-files/cash/Stars/", compare, importer) + +if __name__ == '__main__': + sys.exit(main()) + From 75e1dbbfbab8fed15ee44e0b5b6210ccb37704e2 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 18:33:43 +0800 Subject: [PATCH 192/641] Importer; Add missing default option --- pyfpdb/fpdb_import.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index a1835830..8ff2ba86 100755 --- a/pyfpdb/fpdb_import.py +++ b/pyfpdb/fpdb_import.py @@ -103,6 +103,7 @@ class Importer: self.settings.setdefault("dropHudCache", "don't drop") self.settings.setdefault("starsArchive", False) self.settings.setdefault("testData", False) + self.settings.setdefault("cacheHHC", False) self.writeq = None self.database = Database.Database(self.config, sql = self.sql) From 041c9c8527438474ca2a07c7c263539bd3c0bdc2 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 18:40:37 +0800 Subject: [PATCH 193/641] Regression test file: Handsplayers data --- ...NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp | 751 ++++++++++++++++++ 1 file changed, 751 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp new file mode 100644 index 00000000..e3e7a574 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp @@ -0,0 +1,751 @@ +{ u'Player0': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 5, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 8, + 'sitout': False, + 'startCards': 0, + 'startCash': 491, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 2, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -24, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player1': { 'card1': 15, + 'card2': 51, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 2, + 'sitout': False, + 'startCards': 25, + 'startCash': 35, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player2': { 'card1': 36, + 'card2': 23, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': True, + 'seatNo': 1, + 'sitout': False, + 'startCards': 127, + 'startCash': 426, + 'street0Aggr': True, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': True, + 'street0_3BDone': True, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -131, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player3': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'B', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 7, + 'sitout': False, + 'startCards': 0, + 'startCash': 255, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player4': { 'card1': 52, + 'card2': 50, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 4, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 10, + 'sawShowdown': True, + 'seatNo': 9, + 'sitout': False, + 'startCards': 167, + 'startCash': 131, + 'street0Aggr': True, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': True, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 148, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 279, + 'wonAtSD': 1.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player5': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 4, + 'sitout': False, + 'startCards': 0, + 'startCash': 370, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player6': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 5, + 'sitout': False, + 'startCards': 0, + 'startCash': 498, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -1, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player7': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 3, + 'sitout': False, + 'startCards': 0, + 'startCash': 834, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}} From 3d6a0e5040a61e71066a5cfef1d5f6c0ecaddccb Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 19:10:52 +0800 Subject: [PATCH 194/641] RTF: Oops - appear to have accidentally deleted the field --- .../cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp | 1 + 1 file changed, 1 insertion(+) diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp index e3e7a574..e4b0a096 100644 --- a/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-FR-USD-0.01-0.02-201004.4betPF.txt.hp @@ -722,6 +722,7 @@ 'street2CheckCallRaiseChance': False, 'street2CheckCallRaiseDone': False, 'street2Seen': False, + 'street2Raises': False, 'street3Aggr': False, 'street3Bets': 0, 'street3CBChance': False, From 1236460e095bcc38bf41c7ff473ea1d9c988d0bb Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 19:11:46 +0800 Subject: [PATCH 195/641] TestHP: Hopefully useful debug messages --- pyfpdb/TestHandsPlayers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index 15925e2e..b6596933 100644 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -39,9 +39,12 @@ def compare(leaf, importer): for hand in handlist: ghash = hand.stats.getHandsPlayers() for p in ghash: + #print "DEBUG: player: '%s'" % p pstat = ghash[p] teststat = testhash[p] + for stat in pstat: + #print "pstat[%s][%s]: %s == %s" % (p, stat, pstat[stat], teststat[stat]) if pstat[stat] == teststat[stat]: # The stats match - continue pass From 3c5908224c2b1388815d90f8ca4ea4d037762743 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 19:31:23 +0800 Subject: [PATCH 196/641] TestHP: Pass name to print function --- pyfpdb/TestHandsPlayers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index b6596933..a49cd88b 100644 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -9,10 +9,11 @@ import Database import SQL import fpdb_import -def error_report( filename, hand, stat, ghash, testhash): +def error_report( filename, hand, stat, ghash, testhash, player): print "Regression Test Error:" print "\tFile: %s" % filename print "\tStat: %s" % stat + print "\tPlayer: %s" % player def compare(leaf, importer): filename = leaf @@ -50,7 +51,7 @@ def compare(leaf, importer): pass else: # Stats don't match - Doh! - error_report(filename, hand, stat, ghash, testhash) + error_report(filename, hand, stat, ghash, testhash, p) importer.clearFileList() From 8225b9a3f64fbd6a1fb66cc80d23c0b9fc1119d8 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 19:32:45 +0800 Subject: [PATCH 197/641] Test: Add failing test for streetXSeen All in preflop hand currently fails as all streets are seen, but the 2 all-in players are incorrectly recorded. --- ...6max-USD-0.05-0.10-200912.Allin-pre.txt.hp | 564 ++++++++++++++++++ 1 file changed, 564 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp new file mode 100644 index 00000000..50ac6ca2 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp @@ -0,0 +1,564 @@ +{ u'AAALISAAAA': { 'card1': 25, + 'card2': 17, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 205, + 'sawShowdown': True, + 'seatNo': 3, + 'sitout': False, + 'startCards': 147, + 'startCash': 2020, + 'street0Aggr': True, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': True, + 'street0_3BDone': True, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 1915, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 3935, + 'wonAtSD': 1.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Arbaz': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'B', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 4, + 'sitout': False, + 'startCards': 0, + 'startCash': 2500, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -25, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Bl\xe5veis': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 1, + 'sitout': False, + 'startCards': 0, + 'startCash': 5510, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': True, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Kinewma': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 2, + 'sitout': False, + 'startCards': 0, + 'startCash': 3140, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': True, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'bys7': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 6, + 'sitout': False, + 'startCards': 0, + 'startCash': 4135, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': True, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -75, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u's0rrow': { 'card1': 39, + 'card2': 52, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': True, + 'raisedFirstIn': True, + 'rake': 0, + 'sawShowdown': True, + 'seatNo': 5, + 'sitout': False, + 'startCards': 169, + 'startCash': 2985, + 'street0Aggr': True, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2020, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}} From 568eba84ad62cc9c4628d51e4b033be5777212d2 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 19 Aug 2010 19:42:41 +0800 Subject: [PATCH 198/641] Test: 4 Bet Pre test - curently fails. s0rrow raises, is 3bet by AAALISAAAA, then 4bets pre-flop --- .../Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp index 50ac6ca2..bbc87a77 100644 --- a/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/NLHE-6max-USD-0.05-0.10-200912.Allin-pre.txt.hp @@ -515,8 +515,8 @@ 'street0VPI': True, 'street0_3BChance': False, 'street0_3BDone': False, - 'street0_4BChance': False, - 'street0_4BDone': False, + 'street0_4BChance': True, + 'street0_4BDone': True, 'street1Aggr': False, 'street1Bets': 0, 'street1CBChance': False, From c959e244adb05b6607f6e5e5b6bd8099e1595b33 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 19:22:56 +0200 Subject: [PATCH 199/641] rename dump files to match carl's scheme, add a partially verified second dump plenty of bugs to be fixed in this one! --- ...D-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql | 1719 ++++++++ ...-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt | 1623 -------- .../0001_empty_DB.txt => empty_DB.0000.sql} | 0 ...D-STT-5-20100607.allInPreflop.txt.0002.sql | 3664 +++++++++++++++++ 4 files changed, 5383 insertions(+), 1623 deletions(-) create mode 100644 pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql delete mode 100644 pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt rename pyfpdb/regression-test-files/{dumps/0001_empty_DB.txt => empty_DB.0000.sql} (100%) create mode 100644 pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql new file mode 100644 index 00000000..e8ee0bd7 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql @@ -0,0 +1,1719 @@ +fpdb database dump +DB version=142 + +################### +Table Autorates +################### +empty table + +################### +Table Backings +################### +empty table + +################### +Table Gametypes +################### + id=1 + siteId=2 + currency=USD + type=ring + base=hold + category=holdem + limitType=fl + hiLo=h + smallBlind=2 + bigBlind=5 + smallBet=5 + bigBet=10 + + +################### +Table Hands +################### + id=1 + tableName=Elektra II + siteHandNo=46290540537 + tourneyId=None + gametypeId=1 + startTime=2010-07-03 12:46:30+00:00 + importTime=ignore + seats=8 + maxSeats=10 + rush=None + boardcard1=0 + boardcard2=0 + boardcard3=0 + boardcard4=0 + boardcard5=0 + texture=None + playersVpi=0 + playersAtStreet1=0 + playersAtStreet2=0 + playersAtStreet3=0 + playersAtStreet4=0 + playersAtShowdown=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + street1Pot=0 + street2Pot=0 + street3Pot=0 + street4Pot=0 + showdownPot=0 + comment=None + commentTs=None + + +################### +Table HandsActions +################### +empty table + +################### +Table HandsPlayers +################### + id=1 + handId=1 + playerId=8 + startCash=169 + position=5 + seatNo=10 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=2 + handId=1 + playerId=3 + startCash=280 + position=2 + seatNo=4 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=3 + handId=1 + playerId=6 + startCash=122 + position=S + seatNo=7 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=-2 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=4 + handId=1 + playerId=5 + startCash=293 + position=0 + seatNo=6 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=5 + handId=1 + playerId=7 + startCash=226 + position=B + seatNo=9 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=4 + rake=0 + totalProfit=2 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=6 + handId=1 + playerId=1 + startCash=277 + position=4 + seatNo=1 + sitout=0 + wentAllInOnStreet=None + card1=7 + card2=28 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=20 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=7 + handId=1 + playerId=4 + startCash=238 + position=1 + seatNo=5 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=8 + handId=1 + playerId=2 + startCash=193 + position=3 + seatNo=2 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + +################### +Table HudCache +################### + id=1 + gametypeId=1 + playerId=1 + activeSeats=8 + position=M + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=2 + gametypeId=1 + playerId=2 + activeSeats=8 + position=M + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=3 + gametypeId=1 + playerId=3 + activeSeats=8 + position=M + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=4 + gametypeId=1 + playerId=4 + activeSeats=8 + position=C + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=5 + gametypeId=1 + playerId=5 + activeSeats=8 + position=D + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=6 + gametypeId=1 + playerId=6 + activeSeats=8 + position=S + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=-2 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=7 + gametypeId=1 + playerId=7 + activeSeats=8 + position=B + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=2 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=8 + gametypeId=1 + playerId=8 + activeSeats=8 + position=E + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + +################### +Table Players +################### + id=1 + name=steffen780 + siteId=2 + comment=None + commentTs=None + + id=2 + name=ialexiv + siteId=2 + comment=None + commentTs=None + + id=3 + name=seregaserg + siteId=2 + comment=None + commentTs=None + + id=4 + name=GREEN373 + siteId=2 + comment=None + commentTs=None + + id=5 + name=Swann99 + siteId=2 + comment=None + commentTs=None + + id=6 + name=ToolTheSheep + siteId=2 + comment=None + commentTs=None + + id=7 + name=bigsergv + siteId=2 + comment=None + commentTs=None + + id=8 + name=garikoitz_22 + siteId=2 + comment=None + commentTs=None + + +################### +Table Settings +################### + version=142 + + +################### +Table Sites +################### + id=1 + name=Full Tilt Poker + code=FT + + id=2 + name=PokerStars + code=PS + + id=3 + name=Everleaf + code=EV + + id=4 + name=Win2day + code=W2 + + id=5 + name=OnGame + code=OG + + id=6 + name=UltimateBet + code=UB + + id=7 + name=Betfair + code=BF + + id=8 + name=Absolute + code=AB + + id=9 + name=PartyPoker + code=PP + + id=10 + name=Partouche + code=PA + + id=11 + name=Carbon + code=CA + + id=12 + name=PKR + code=PK + + +################### +Table TourneyTypes +################### +empty table + +################### +Table Tourneys +################### +empty table + +################### +Table TourneysPlayers +################### +empty table + diff --git a/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt b/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt deleted file mode 100644 index 5da42951..00000000 --- a/pyfpdb/regression-test-files/dumps/0002_diff_after_cash-Stars-Flop-LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt +++ /dev/null @@ -1,1623 +0,0 @@ -17c17,29 -< empty table ---- -> id=1 -> siteId=2 -> currency=USD -> type=ring -> base=hold -> category=holdem -> limitType=fl -> hiLo=h -> smallBlind=2 -> bigBlind=5 -> smallBet=5 -> bigBet=10 -> -22c34,68 -< empty table ---- -> id=1 -> tableName=Elektra II -> siteHandNo=46290540537 -> tourneyId=None -> gametypeId=1 -> startTime=2010-07-03 12:46:30+00:00 -> importTime=ignore -> seats=8 -> maxSeats=10 -> rush=None -> boardcard1=0 -> boardcard2=0 -> boardcard3=0 -> boardcard4=0 -> boardcard5=0 -> texture=None -> playersVpi=0 -> playersAtStreet1=0 -> playersAtStreet2=0 -> playersAtStreet3=0 -> playersAtStreet4=0 -> playersAtShowdown=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> street1Pot=0 -> street2Pot=0 -> street3Pot=0 -> street4Pot=0 -> showdownPot=0 -> comment=None -> commentTs=None -> -32c78,893 -< empty table ---- -> id=1 -> handId=1 -> playerId=8 -> startCash=169 -> position=5 -> seatNo=10 -> sitout=0 -> wentAllInOnStreet=None -> card1=0 -> card2=0 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=0 -> ante=None -> winnings=0 -> rake=0 -> totalProfit=0 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -> id=2 -> handId=1 -> playerId=3 -> startCash=280 -> position=2 -> seatNo=4 -> sitout=0 -> wentAllInOnStreet=None -> card1=0 -> card2=0 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=0 -> ante=None -> winnings=0 -> rake=0 -> totalProfit=0 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -> id=3 -> handId=1 -> playerId=6 -> startCash=122 -> position=S -> seatNo=7 -> sitout=0 -> wentAllInOnStreet=None -> card1=0 -> card2=0 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=0 -> ante=None -> winnings=0 -> rake=0 -> totalProfit=-2 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -> id=4 -> handId=1 -> playerId=5 -> startCash=293 -> position=0 -> seatNo=6 -> sitout=0 -> wentAllInOnStreet=None -> card1=0 -> card2=0 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=0 -> ante=None -> winnings=0 -> rake=0 -> totalProfit=0 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -> id=5 -> handId=1 -> playerId=7 -> startCash=226 -> position=B -> seatNo=9 -> sitout=0 -> wentAllInOnStreet=None -> card1=0 -> card2=0 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=0 -> ante=None -> winnings=4 -> rake=0 -> totalProfit=2 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=0 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -> id=6 -> handId=1 -> playerId=1 -> startCash=277 -> position=4 -> seatNo=1 -> sitout=0 -> wentAllInOnStreet=None -> card1=7 -> card2=28 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=20 -> ante=None -> winnings=0 -> rake=0 -> totalProfit=0 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -> id=7 -> handId=1 -> playerId=4 -> startCash=238 -> position=1 -> seatNo=5 -> sitout=0 -> wentAllInOnStreet=None -> card1=0 -> card2=0 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=0 -> ante=None -> winnings=0 -> rake=0 -> totalProfit=0 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -> id=8 -> handId=1 -> playerId=2 -> startCash=193 -> position=3 -> seatNo=2 -> sitout=0 -> wentAllInOnStreet=None -> card1=0 -> card2=0 -> card3=0 -> card4=0 -> card5=0 -> card6=0 -> card7=0 -> startCards=0 -> ante=None -> winnings=0 -> rake=0 -> totalProfit=0 -> comment=None -> commentTs=None -> tourneysPlayersId=None -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> actionString=None -> -37c898,1593 -< empty table ---- -> id=1 -> gametypeId=1 -> playerId=1 -> activeSeats=8 -> position=M -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -> id=2 -> gametypeId=1 -> playerId=2 -> activeSeats=8 -> position=M -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -> id=3 -> gametypeId=1 -> playerId=3 -> activeSeats=8 -> position=M -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -> id=4 -> gametypeId=1 -> playerId=4 -> activeSeats=8 -> position=C -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -> id=5 -> gametypeId=1 -> playerId=5 -> activeSeats=8 -> position=D -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -> id=6 -> gametypeId=1 -> playerId=6 -> activeSeats=8 -> position=S -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=-2 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -> id=7 -> gametypeId=1 -> playerId=7 -> activeSeats=8 -> position=B -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=0 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=2 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -> id=8 -> gametypeId=1 -> playerId=8 -> activeSeats=8 -> position=E -> tourneyTypeId=None -> styleKey=ignore -> HDs=1 -> wonWhenSeenStreet1=0.0 -> wonWhenSeenStreet2=0.0 -> wonWhenSeenStreet3=0.0 -> wonWhenSeenStreet4=0.0 -> wonAtSD=0.0 -> street0VPI=0 -> street0Aggr=0 -> street0_3BChance=0 -> street0_3BDone=0 -> street0_4BChance=0 -> street0_4BDone=0 -> other3BStreet0=0 -> other4BStreet0=0 -> street1Seen=0 -> street2Seen=0 -> street3Seen=0 -> street4Seen=0 -> sawShowdown=0 -> street1Aggr=0 -> street2Aggr=0 -> street3Aggr=0 -> street4Aggr=0 -> otherRaisedStreet0=0 -> otherRaisedStreet1=0 -> otherRaisedStreet2=0 -> otherRaisedStreet3=0 -> otherRaisedStreet4=0 -> foldToOtherRaisedStreet0=0 -> foldToOtherRaisedStreet1=0 -> foldToOtherRaisedStreet2=0 -> foldToOtherRaisedStreet3=0 -> foldToOtherRaisedStreet4=0 -> raiseFirstInChance=1 -> raisedFirstIn=0 -> foldBbToStealChance=0 -> foldedBbToSteal=0 -> foldSbToStealChance=0 -> foldedSbToSteal=0 -> street1CBChance=0 -> street1CBDone=0 -> street2CBChance=0 -> street2CBDone=0 -> street3CBChance=0 -> street3CBDone=0 -> street4CBChance=0 -> street4CBDone=0 -> foldToStreet1CBChance=0 -> foldToStreet1CBDone=0 -> foldToStreet2CBChance=0 -> foldToStreet2CBDone=0 -> foldToStreet3CBChance=0 -> foldToStreet3CBDone=0 -> foldToStreet4CBChance=0 -> foldToStreet4CBDone=0 -> totalProfit=0 -> street1CheckCallRaiseChance=0 -> street1CheckCallRaiseDone=0 -> street2CheckCallRaiseChance=0 -> street2CheckCallRaiseDone=0 -> street3CheckCallRaiseChance=0 -> street3CheckCallRaiseDone=0 -> street4CheckCallRaiseChance=0 -> street4CheckCallRaiseDone=0 -> street0Calls=0 -> street1Calls=0 -> street2Calls=0 -> street3Calls=0 -> street4Calls=0 -> street0Bets=0 -> street1Bets=0 -> street2Bets=0 -> street3Bets=0 -> street4Bets=0 -> street0Raises=0 -> street1Raises=0 -> street2Raises=0 -> street3Raises=0 -> street4Raises=0 -> -42c1598,1645 -< empty table ---- -> id=1 -> name=steffen780 -> siteId=2 -> comment=None -> commentTs=None -> -> id=2 -> name=ialexiv -> siteId=2 -> comment=None -> commentTs=None -> -> id=3 -> name=seregaserg -> siteId=2 -> comment=None -> commentTs=None -> -> id=4 -> name=GREEN373 -> siteId=2 -> comment=None -> commentTs=None -> -> id=5 -> name=Swann99 -> siteId=2 -> comment=None -> commentTs=None -> -> id=6 -> name=ToolTheSheep -> siteId=2 -> comment=None -> commentTs=None -> -> id=7 -> name=bigsergv -> siteId=2 -> comment=None -> commentTs=None -> -> id=8 -> name=garikoitz_22 -> siteId=2 -> comment=None -> commentTs=None -> diff --git a/pyfpdb/regression-test-files/dumps/0001_empty_DB.txt b/pyfpdb/regression-test-files/empty_DB.0000.sql similarity index 100% rename from pyfpdb/regression-test-files/dumps/0001_empty_DB.txt rename to pyfpdb/regression-test-files/empty_DB.0000.sql diff --git a/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql b/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql new file mode 100644 index 00000000..7f0a00cc --- /dev/null +++ b/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql @@ -0,0 +1,3664 @@ +fpdb database dump +DB version=142 + +################### +Table Autorates +################### +empty table + +################### +Table Backings +################### +empty table + +################### +Table Gametypes +################### + id=1 + siteId=2 + currency=USD + type=ring + base=hold + category=holdem + limitType=fl + hiLo=h + smallBlind=2 + bigBlind=5 + smallBet=5 + bigBet=10 + + id=2 + siteId=2 + currency=T$ + type=tour + base=hold + category=holdem + limitType=fl + hiLo=h + smallBlind=5000 + bigBlind=10000 + smallBet=10000 + bigBet=20000 + + +################### +Table Hands +################### + id=1 + tableName=Elektra II + siteHandNo=46290540537 + tourneyId=None + gametypeId=1 + startTime=2010-07-03 12:46:30+00:00 + importTime=ignore + seats=8 + maxSeats=10 + rush=None + boardcard1=0 + boardcard2=0 + boardcard3=0 + boardcard4=0 + boardcard5=0 + texture=None + playersVpi=0 + playersAtStreet1=0 + playersAtStreet2=0 + playersAtStreet3=0 + playersAtStreet4=0 + playersAtShowdown=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + street1Pot=0 + street2Pot=0 + street3Pot=0 + street4Pot=0 + showdownPot=0 + comment=None + commentTs=None + + id=2 + tableName=280631121 1 + siteHandNo=45201040897 + tourneyId=1 + gametypeId=2 + startTime=2010-06-07 20:14:48+00:00 + importTime=ignore + seats=9 + maxSeats=9 + rush=None + boardcard1=27 + boardcard2=11 + boardcard3=31 + boardcard4=47 + boardcard5=16 + texture=None + playersVpi=4 + playersAtStreet1=4 + playersAtStreet2=3 + playersAtStreet3=3 + playersAtStreet4=0 + playersAtShowdown=3 + street0Raises=2 + street1Raises=1 + street2Raises=1 + street3Raises=1 + street4Raises=0 + street1Pot=59000 + street2Pot=79000 + street3Pot=99000 + street4Pot=0 + showdownPot=99000 + comment=None + commentTs=None + + +################### +Table HandsActions +################### +empty table + +################### +Table HandsPlayers +################### + id=1 + handId=1 + playerId=8 + startCash=169 + position=5 + seatNo=10 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=2 + handId=1 + playerId=3 + startCash=280 + position=2 + seatNo=4 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=3 + handId=1 + playerId=6 + startCash=122 + position=S + seatNo=7 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=-2 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=4 + handId=1 + playerId=5 + startCash=293 + position=0 + seatNo=6 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=5 + handId=1 + playerId=7 + startCash=226 + position=B + seatNo=9 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=4 + rake=0 + totalProfit=2 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=6 + handId=1 + playerId=1 + startCash=277 + position=4 + seatNo=1 + sitout=0 + wentAllInOnStreet=None + card1=7 + card2=28 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=20 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=7 + handId=1 + playerId=4 + startCash=238 + position=1 + seatNo=5 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=8 + handId=1 + playerId=2 + startCash=193 + position=3 + seatNo=2 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=None + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=9 + handId=2 + playerId=9 + startCash=11000 + position=1 + seatNo=1 + sitout=0 + wentAllInOnStreet=0 + card1=21 + card2=52 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=104 + ante=None + winnings=0 + rake=0 + totalProfit=-11000 + comment=None + commentTs=None + tourneysPlayersId=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=1 + street0Aggr=1 + street0_3BChance=1 + street0_3BDone=1 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=1 + street2Seen=1 + street3Seen=1 + street4Seen=0 + sawShowdown=1 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=1 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=10 + handId=2 + playerId=14 + startCash=142500 + position=5 + seatNo=6 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=-11000 + comment=None + commentTs=None + tourneysPlayersId=6 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=1 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=1 + other4BStreet0=0 + street1Seen=1 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=1 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=1 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=1 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=2 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=11 + handId=2 + playerId=16 + startCash=39000 + position=2 + seatNo=9 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=9 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=1 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=1 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=1 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=12 + handId=2 + playerId=13 + startCash=189000 + position=6 + seatNo=5 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=5 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=13 + handId=2 + playerId=10 + startCash=143000 + position=0 + seatNo=2 + sitout=1 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=2 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=1 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=14 + handId=2 + playerId=1 + startCash=174500 + position=3 + seatNo=8 + sitout=0 + wentAllInOnStreet=None + card1=22 + card2=9 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=113 + ante=None + winnings=0 + rake=0 + totalProfit=-36000 + comment=None + commentTs=None + tourneysPlayersId=8 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=1 + street0Aggr=1 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=1 + street2Seen=1 + street3Seen=1 + street4Seen=0 + sawShowdown=1 + street1Aggr=1 + street2Aggr=1 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=1 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=1 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=1 + street1Calls=0 + street2Calls=0 + street3Calls=1 + street4Calls=0 + street0Bets=1 + street1Bets=1 + street2Bets=1 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=15 + handId=2 + playerId=15 + startCash=196000 + position=4 + seatNo=7 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=0 + comment=None + commentTs=None + tourneysPlayersId=7 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=16 + handId=2 + playerId=11 + startCash=125000 + position=S + seatNo=3 + sitout=0 + wentAllInOnStreet=None + card1=34 + card2=29 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=94 + ante=None + winnings=99000 + rake=0 + totalProfit=63000 + comment=None + commentTs=None + tourneysPlayersId=3 + wonWhenSeenStreet1=1.0 + wonWhenSeenStreet2=1.0 + wonWhenSeenStreet3=1.0 + wonWhenSeenStreet4=0.0 + wonAtSD=1.0 + street0VPI=1 + street0Aggr=1 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=1 + other4BStreet0=0 + street1Seen=1 + street2Seen=1 + street3Seen=1 + street4Seen=0 + sawShowdown=1 + street1Aggr=0 + street2Aggr=0 + street3Aggr=1 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=1 + otherRaisedStreet2=1 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=1 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=1 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=1 + street1Calls=1 + street2Calls=1 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=1 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + + id=17 + handId=2 + playerId=12 + startCash=330000 + position=B + seatNo=4 + sitout=0 + wentAllInOnStreet=None + card1=0 + card2=0 + card3=0 + card4=0 + card5=0 + card6=0 + card7=0 + startCards=0 + ante=None + winnings=0 + rake=0 + totalProfit=-5000 + comment=None + commentTs=None + tourneysPlayersId=4 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=1 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=1 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=1 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + actionString=None + +!!!verified to here +################### +Table HudCache +################### + id=1 + gametypeId=1 + playerId=1 + activeSeats=8 + position=M + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=2 + gametypeId=1 + playerId=2 + activeSeats=8 + position=M + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=3 + gametypeId=1 + playerId=3 + activeSeats=8 + position=M + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=4 + gametypeId=1 + playerId=4 + activeSeats=8 + position=C + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=5 + gametypeId=1 + playerId=5 + activeSeats=8 + position=D + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=6 + gametypeId=1 + playerId=6 + activeSeats=8 + position=S + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=-2 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=7 + gametypeId=1 + playerId=7 + activeSeats=8 + position=B + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=2 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=8 + gametypeId=1 + playerId=8 + activeSeats=8 + position=E + tourneyTypeId=None + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=9 + gametypeId=2 + playerId=1 + activeSeats=9 + position=M + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=1 + street0Aggr=1 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=1 + street2Seen=1 + street3Seen=1 + street4Seen=0 + sawShowdown=1 + street1Aggr=1 + street2Aggr=1 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=1 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=1 + street2CBDone=1 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=-36000 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=1 + street1Calls=0 + street2Calls=0 + street3Calls=1 + street4Calls=0 + street0Bets=0 + street1Bets=1 + street2Bets=1 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=10 + gametypeId=2 + playerId=9 + activeSeats=9 + position=C + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=1 + street0Aggr=1 + street0_3BChance=1 + street0_3BDone=1 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=1 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=-11000 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=11 + gametypeId=2 + playerId=10 + activeSeats=9 + position=D + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=12 + gametypeId=2 + playerId=11 + activeSeats=9 + position=S + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=1.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=1.0 + street0VPI=1 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=1 + street2Seen=1 + street3Seen=1 + street4Seen=0 + sawShowdown=1 + street1Aggr=0 + street2Aggr=0 + street3Aggr=1 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=1 + otherRaisedStreet2=1 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=63000 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=1 + street2CheckCallRaiseDone=1 + street3CheckCallRaiseChance=1 + street3CheckCallRaiseDone=1 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=1 + street1Calls=1 + street2Calls=1 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=1 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=13 + gametypeId=2 + playerId=12 + activeSeats=9 + position=B + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=-5000 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=14 + gametypeId=2 + playerId=13 + activeSeats=9 + position=E + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=15 + gametypeId=2 + playerId=14 + activeSeats=9 + position=E + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=1 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=1 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=1 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=1 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=1 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=1 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=-11000 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=1 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=2 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=16 + gametypeId=2 + playerId=15 + activeSeats=9 + position=M + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=0 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + id=17 + gametypeId=2 + playerId=16 + activeSeats=9 + position=M + tourneyTypeId=1 + styleKey=ignore + HDs=1 + wonWhenSeenStreet1=0.0 + wonWhenSeenStreet2=0.0 + wonWhenSeenStreet3=0.0 + wonWhenSeenStreet4=0.0 + wonAtSD=0.0 + street0VPI=0 + street0Aggr=0 + street0_3BChance=1 + street0_3BDone=0 + street0_4BChance=0 + street0_4BDone=0 + other3BStreet0=0 + other4BStreet0=0 + street1Seen=0 + street2Seen=0 + street3Seen=0 + street4Seen=0 + sawShowdown=0 + street1Aggr=0 + street2Aggr=0 + street3Aggr=0 + street4Aggr=0 + otherRaisedStreet0=0 + otherRaisedStreet1=0 + otherRaisedStreet2=0 + otherRaisedStreet3=0 + otherRaisedStreet4=0 + foldToOtherRaisedStreet0=0 + foldToOtherRaisedStreet1=0 + foldToOtherRaisedStreet2=0 + foldToOtherRaisedStreet3=0 + foldToOtherRaisedStreet4=0 + raiseFirstInChance=0 + raisedFirstIn=0 + foldBbToStealChance=0 + foldedBbToSteal=0 + foldSbToStealChance=0 + foldedSbToSteal=0 + street1CBChance=0 + street1CBDone=0 + street2CBChance=0 + street2CBDone=0 + street3CBChance=0 + street3CBDone=0 + street4CBChance=0 + street4CBDone=0 + foldToStreet1CBChance=0 + foldToStreet1CBDone=0 + foldToStreet2CBChance=0 + foldToStreet2CBDone=0 + foldToStreet3CBChance=0 + foldToStreet3CBDone=0 + foldToStreet4CBChance=0 + foldToStreet4CBDone=0 + totalProfit=0 + street1CheckCallRaiseChance=0 + street1CheckCallRaiseDone=0 + street2CheckCallRaiseChance=0 + street2CheckCallRaiseDone=0 + street3CheckCallRaiseChance=0 + street3CheckCallRaiseDone=0 + street4CheckCallRaiseChance=0 + street4CheckCallRaiseDone=0 + street0Calls=0 + street1Calls=0 + street2Calls=0 + street3Calls=0 + street4Calls=0 + street0Bets=0 + street1Bets=0 + street2Bets=0 + street3Bets=0 + street4Bets=0 + street0Raises=0 + street1Raises=0 + street2Raises=0 + street3Raises=0 + street4Raises=0 + + +################### +Table Players +################### + id=1 + name=steffen780 + siteId=2 + comment=None + commentTs=None + + id=2 + name=ialexiv + siteId=2 + comment=None + commentTs=None + + id=3 + name=seregaserg + siteId=2 + comment=None + commentTs=None + + id=4 + name=GREEN373 + siteId=2 + comment=None + commentTs=None + + id=5 + name=Swann99 + siteId=2 + comment=None + commentTs=None + + id=6 + name=ToolTheSheep + siteId=2 + comment=None + commentTs=None + + id=7 + name=bigsergv + siteId=2 + comment=None + commentTs=None + + id=8 + name=garikoitz_22 + siteId=2 + comment=None + commentTs=None + + id=9 + name=Slush11 + siteId=2 + comment=None + commentTs=None + + id=10 + name=zsoccerino + siteId=2 + comment=None + commentTs=None + + id=11 + name=101ripcord + siteId=2 + comment=None + commentTs=None + + id=12 + name=Lawwill + siteId=2 + comment=None + commentTs=None + + id=13 + name=nakamurov + siteId=2 + comment=None + commentTs=None + + id=14 + name=67_fredf_67 + siteId=2 + comment=None + commentTs=None + + id=15 + name=NICk.nico333 + siteId=2 + comment=None + commentTs=None + + id=16 + name=PORCHES996 + siteId=2 + comment=None + commentTs=None + + +################### +Table Settings +################### + version=142 + + +################### +Table Sites +################### + id=1 + name=Full Tilt Poker + code=FT + + id=2 + name=PokerStars + code=PS + + id=3 + name=Everleaf + code=EV + + id=4 + name=Win2day + code=W2 + + id=5 + name=OnGame + code=OG + + id=6 + name=UltimateBet + code=UB + + id=7 + name=Betfair + code=BF + + id=8 + name=Absolute + code=AB + + id=9 + name=PartyPoker + code=PP + + id=10 + name=Partouche + code=PA + + id=11 + name=Carbon + code=CA + + id=12 + name=PKR + code=PK + + +################### +Table TourneyTypes +################### + id=1 + siteId=2 + currency=USD + buyin=500 + fee=50 + category=holdem + limitType=fl + buyInChips=None + maxSeats=None + rebuy=0 + rebuyCost=None + rebuyFee=None + rebuyChips=None + addOn=0 + addOnCost=None + addOnFee=None + addOnChips=None + knockout=0 + koBounty=None + speed=Normal + shootout=0 + matrix=0 + sng=None + satellite=None + doubleOrNothing=None + guarantee=None + added=None + addedCurrency=None + + +################### +Table Tourneys +################### + id=1 + tourneyTypeId=1 + siteTourneyNo=280631121 + entries=None + prizepool=None + startTime=2010-06-07 20:14:48+00:00 + endTime=None + tourneyName=None + matrixIdProcessed=None + totalRebuyCount=None + totalAddOnCount=None + comment=None + commentTs=None + + +################### +Table TourneysPlayers +################### + id=1 + tourneyId=1 + playerId=9 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=2 + tourneyId=1 + playerId=10 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=3 + tourneyId=1 + playerId=11 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=4 + tourneyId=1 + playerId=12 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=5 + tourneyId=1 + playerId=13 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=6 + tourneyId=1 + playerId=14 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=7 + tourneyId=1 + playerId=15 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=8 + tourneyId=1 + playerId=1 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + id=9 + tourneyId=1 + playerId=16 + rank=None + winnings=None + winningsCurrency=None + rebuyCount=None + addOnCount=None + koCount=None + comment=None + commentTs=None + + From 48e0cbe8cddbf189c218cb73c7c00fa16d8f8d7f Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 19 Aug 2010 23:17:58 +0200 Subject: [PATCH 200/641] HUD: add error handler for error reported by phenixrising --- pyfpdb/Hud.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index 0fdf314f..c394108c 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -525,7 +525,10 @@ class Hud: def debug_stat_windows(self, *args): # print self.table, "\n", self.main_window.window.get_transient_for() for w in self.stat_windows: - print self.stat_windows[w].window.window.get_transient_for() + try: + print self.stat_windows[w].window.window.get_transient_for() + except AttributeError: + print "this window doesnt have get_transient_for" def save_layout(self, *args): new_layout = [(0, 0)] * self.max From 08462884cfd6af7bac48736c8d0f724f86090075 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 16:51:41 +0800 Subject: [PATCH 201/641] OnGame: Significant updates. This parser hasn't been updated/completed since a very early version of HHC File is updated to the point where it will now run and just crashes on a regex --- pyfpdb/HUD_config.xml.example | 1 + pyfpdb/OnGameToFpdb.py | 127 +++++++++++----------------------- 2 files changed, 42 insertions(+), 86 deletions(-) diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index d7cd3a17..e95db1b8 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -670,6 +670,7 @@ Left-Drag to Move" + diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index 80d8d646..b82329f8 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -24,104 +24,60 @@ from HandHistoryConverter import * # OnGame HH Format -#Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 -#Table Kuopio, 20 Sep 2008 11:59 PM - -#Seat 1: .Lucchess ($4.17 in chips) -#Seat 3: Gloff1 ($108 in chips) -#Seat 4: far a ($13.54 in chips) -#Seat 5: helander2222 ($49.77 in chips) -#Seat 6: lopllopl ($62.06 in chips) -#Seat 7: crazyhorse6 ($101.91 in chips) -#Seat 8: peeci ($25.02 in chips) -#Seat 9: Manuelhertz ($49 in chips) -#Seat 10: Eurolll ($58.25 in chips) -#ANTES/BLINDS -#helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). - -#PRE-FLOP -#crazyhorse6 folds, peeci folds, Manuelhertz folds, Eurolll calls $0.50, .Lucchess calls $0.50, Gloff1 folds, far a folds, helander2222 folds, lopllopl checks. - -#FLOP [board cards AH,8H,KH ] -#lopllopl checks, Eurolll checks, .Lucchess checks. - -#TURN [board cards AH,8H,KH,6S ] -#lopllopl checks, Eurolll checks, .Lucchess checks. - -#RIVER [board cards AH,8H,KH,6S,8S ] -#lopllopl checks, Eurolll bets $1.25, .Lucchess folds, lopllopl folds. - -#SHOWDOWN -#Eurolll wins $2.92. - -#SUMMARY -#Dealer: far a -#Pot: $3, (including rake: $0.08) -#.Lucchess, loses $0.50 -#Gloff1, loses $0 -#far a, loses $0 -#helander2222, loses $0.25 -#lopllopl, loses $0.50 -#crazyhorse6, loses $0 -#peeci, loses $0 -#Manuelhertz, loses $0 -#Eurolll, bets $1.75, collects $2.92, net $1.17 - - class OnGame(HandHistoryConverter): - def __init__(self, config, file): - print "Initialising OnGame converter class" - HandHistoryConverter.__init__(self, config, file, sitename="OnGame") # Call super class init. - self.sitename = "OnGame" - self.setFileType("text", "cp1252") - self.siteId = 5 # Needs to match id entry in Sites database + sitename = "OnGame" + filetype = "text" + codepage = ("utf8", "cp1252") + siteId = 5 # Needs to match id entry in Sites database + #self.rexx.setGameInfoRegex('.*Blinds \$?(?P[.0-9]+)/\$?(?P[.0-9]+)') - self.rexx.setSplitHandRegex('\n\n\n+') + # Static regexes + re_SplitHands = re.compile('\n\n\n+') - #Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 - #Table Kuopio, 20 Sep 2008 11:59 PM - self.rexx.setHandInfoRegex(r"Texas Hold'em \$?(?P[.0-9]+)-\$?(?P[.0-9]+) NL \(real money\), hand #(?P[-A-Z\d]+)\nTable\ (?P
[\' \w]+), (?P\d\d \w+ \d\d\d\d \d\d:\d\d (AM|PM))") - # SB BB HID TABLE DAY MON YEAR HR12 MIN AMPM + #Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 + #Table Kuopio, 20 Sep 2008 11:59 PM + re_HandInfo = re.compile(r"Texas Hold'em \$?(?P[.0-9]+)-\$?(?P[.0-9]+) NL \(real money\), hand #(?P[-A-Z\d]+)\nTable\ (?P
[\' \w]+), (?P\d\d \w+ \d\d\d\d \d\d:\d\d (AM|PM))") + # SB BB HID TABLE DAY MON YEAR HR12 MIN AMPM - self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P.*)\n') + # self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P.*)\n') - #Seat 1: .Lucchess ($4.17 in chips) - self.rexx.setPlayerInfoRegex('Seat (?P[0-9]+): (?P.*) \((\$(?P[.0-9]+) in chips)\)') + #Seat 1: .Lucchess ($4.17 in chips) + re_PlayerInfo = re.compile(u'Seat (?P[0-9]+): (?P.*) \((\$(?P[.0-9]+) in chips)\)') - #ANTES/BLINDS - #helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). - self.rexx.setPostSbRegex('(?P.*) posts blind \(\$?(?P[.0-9]+)\), ') - self.rexx.setPostBbRegex('\), (?P.*) posts blind \(\$?(?P[.0-9]+)\).') - self.rexx.setPostBothRegex('.*\n(?P.*): posts small \& big blinds \[\$? (?P[.0-9]+)') - self.rexx.setHeroCardsRegex('.*\nDealt\sto\s(?P.*)\s\[ (?P.*) \]') + #ANTES/BLINDS + #helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). + re_PostSB = re.compile('(?P.*) posts blind \(\$?(?P[.0-9]+)\), ') + re_PostBB = re.compile('\), (?P.*) posts blind \(\$?(?P[.0-9]+)\).') + re_PostBoth = re.compile('.*\n(?P.*): posts small \& big blinds \[\$? (?P[.0-9]+)') + re_HeroCards = re.compile('.*\nDealt\sto\s(?P.*)\s\[ (?P.*) \]') - #lopllopl checks, Eurolll checks, .Lucchess checks. - self.rexx.setActionStepRegex('(, )?(?P.*?)(?P bets| checks| raises| calls| folds)( \$(?P\d*\.?\d*))?( and is all-in)?') + #lopllopl checks, Eurolll checks, .Lucchess checks. + re_Action = re.compile('(, )?(?P.*?)(?P bets| checks| raises| calls| folds)( \$(?P\d*\.?\d*))?( and is all-in)?') + re_Board = re.compile(r"\[board cards (?P.+) \]") - #Uchilka shows [ KC,JD ] - self.rexx.setShowdownActionRegex('(?P.*) shows \[ (?P.+) \]') + #Uchilka shows [ KC,JD ] + re_ShowdownAction = re.compile('(?P.*) shows \[ (?P.+) \]') - # TODO: read SUMMARY correctly for collected pot stuff. - #Uchilka, bets $11.75, collects $23.04, net $11.29 - self.rexx.setCollectPotRegex('(?P.*), bets.+, collects \$(?P\d*\.?\d*), net.* ') - self.rexx.sits_out_re = re.compile('(?P.*) sits out') - self.rexx.compileRegexes() + # TODO: read SUMMARY correctly for collected pot stuff. + #Uchilka, bets $11.75, collects $23.04, net $11.29 + re_CollectPot = re.compile('(?P.*), bets.+, collects \$(?P\d*\.?\d*), net.* ') + re_sitsOut = re.compile('(?P.*) sits out') def readSupportedGames(self): pass - def determineGameType(self): + def determineGameType(self, handText): # Cheating with this regex, only support nlhe at the moment gametype = ["ring", "hold", "nl"] - m = self.rexx.hand_info_re.search(self.obs) + m = self.re_HandInfo.search(handText) gametype = gametype + [m.group('SB')] gametype = gametype + [m.group('BB')] return gametype def readHandInfo(self, hand): - m = self.rexx.hand_info_re.search(hand.string) + m = self.re_HandInfo.search(hand.string) hand.handid = m.group('HID') hand.tablename = m.group('TABLE') #hand.buttonpos = self.rexx.button_re.search(hand.string).group('BUTTONPNAME') @@ -143,7 +99,7 @@ class OnGame(HandHistoryConverter): #int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC'))) def readPlayerStacks(self, hand): - m = self.rexx.player_info_re.finditer(hand.string) + m = self.re_PlayerInf.finditer(hand.string) players = [] for a in m: hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH')) @@ -162,25 +118,24 @@ class OnGame(HandHistoryConverter): def readCommunityCards(self, hand, street): - self.rexx.board_re = re.compile(r"\[board cards (?P.+) \]") print hand.streets.group(street) if street in ('FLOP','TURN','RIVER'): # a list of streets which get dealt community cards (i.e. all but PREFLOP) - m = self.rexx.board_re.search(hand.streets.group(street)) + m = self.re_Board.search(hand.streets.group(street)) hand.setCommunityCards(street, m.group('CARDS').split(',')) def readBlinds(self, hand): try: - m = self.rexx.small_blind_re.search(hand.string) + m = self.re_PostSB.search(hand.string) hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB')) except: # no small blind hand.addBlind(None, None, None) - for a in self.rexx.big_blind_re.finditer(hand.string): + for a in self.re_PostBB.finditer(hand.string): hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB')) - for a in self.rexx.both_blinds_re.finditer(hand.string): + for a in self.re_PostBoth.finditer(hand.string): hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB')) def readHeroCards(self, hand): - m = self.rexx.hero_cards_re.search(hand.string) + m = self.re_HeroCards.search(hand.string) if(m == None): #Not involved in hand hand.involved = False @@ -193,7 +148,7 @@ class OnGame(HandHistoryConverter): hand.addHoleCards(cards, m.group('PNAME')) def readAction(self, hand, street): - m = self.rexx.action_re.finditer(hand.streets.group(street)) + m = self.re_Action.finditer(hand.streets.group(street)) for action in m: if action.group('ATYPE') == ' raises': hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') ) @@ -211,13 +166,13 @@ class OnGame(HandHistoryConverter): # TODO: Everleaf does not record uncalled bets. def readShowdownActions(self, hand): - for shows in self.rexx.showdown_action_re.finditer(hand.string): + for shows in self.re_ShowdownAction.finditer(hand.string): cards = shows.group('CARDS') cards = set(cards.split(',')) hand.addShownCards(cards, shows.group('PNAME')) def readCollectPot(self,hand): - for m in self.rexx.collect_pot_re.finditer(hand.string): + for m in self.re_CollectPot.finditer(hand.string): hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT')) def readShownCards(self,hand): From dd3cd4fad43ecd86e183faa8e73dbc5b5fc2e8fc Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 17:10:38 +0800 Subject: [PATCH 202/641] OnGame: gettextify and add an error handler --- pyfpdb/OnGameToFpdb.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index b82329f8..d9c069a7 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -21,6 +21,19 @@ import sys import Configuration from HandHistoryConverter import * +from decimal import Decimal + +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string # OnGame HH Format @@ -71,6 +84,12 @@ class OnGame(HandHistoryConverter): gametype = ["ring", "hold", "nl"] m = self.re_HandInfo.search(handText) + if not m: + tmp = handText[0:100] + log.error(_("determineGameType: Unable to recognise gametype from: '%s'") % tmp) + log.error(_("determineGameType: Raising FpdbParseError")) + raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) + gametype = gametype + [m.group('SB')] gametype = gametype + [m.group('BB')] From 5f425e0910077f6fe8e855251cebf1534a013a5f Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 17:59:52 +0800 Subject: [PATCH 203/641] OnGame: Fix determineGameType Assumes that its a cash game at the moment, and needs some love for non-limit holdem --- pyfpdb/OnGameToFpdb.py | 63 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index d9c069a7..5f8e1683 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -43,14 +43,44 @@ class OnGame(HandHistoryConverter): codepage = ("utf8", "cp1252") siteId = 5 # Needs to match id entry in Sites database + substitutions = { + 'LEGAL_ISO' : "USD|EUR|GBP|CAD|FPP", # legal ISO currency codes + 'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8) + } + + limits = { 'NO LIMIT':'nl', 'LIMIT':'fl'} + + games = { # base, category + "TEXAS_HOLDEM" : ('hold','holdem'), + # 'Omaha' : ('hold','omahahi'), + # 'Omaha Hi/Lo' : ('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'), + # '5 Card Draw' : ('draw','fivedraw') + } + #self.rexx.setGameInfoRegex('.*Blinds \$?(?P[.0-9]+)/\$?(?P[.0-9]+)') # Static regexes re_SplitHands = re.compile('\n\n\n+') - - #Texas Hold'em $.5-$1 NL (real money), hand #P4-76915775-797 - #Table Kuopio, 20 Sep 2008 11:59 PM - re_HandInfo = re.compile(r"Texas Hold'em \$?(?P[.0-9]+)-\$?(?P[.0-9]+) NL \(real money\), hand #(?P[-A-Z\d]+)\nTable\ (?P
[\' \w]+), (?P\d\d \w+ \d\d\d\d \d\d:\d\d (AM|PM))") - # SB BB HID TABLE DAY MON YEAR HR12 MIN AMPM + + # ***** History for hand R5-75443872-57 ***** + # Start hand: Wed Aug 18 19:29:10 GMT+0100 2010 + # Table: someplace [75443872] (LIMIT TEXAS_HOLDEM 0.50/1, Real money) + re_HandInfo = re.compile(u""" + \*\*\*\*\*\sHistory\sfor\shand\s(?P[-A-Z\d]+).* + Start\shand:\s(?P.*) + Table:\s(?P
[\'\w]+)\s\[\d+\]\s\( + ( + (?PNo\sLimit|Limit|LIMIT|Pot\sLimit)\s + (?PTEXAS_HOLDEM|RAZZ)\s + (?P[.0-9]+)/ + (?P[.0-9]+) + )? + """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) # self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P.*)\n') @@ -80,8 +110,9 @@ class OnGame(HandHistoryConverter): pass def determineGameType(self, handText): - # Cheating with this regex, only support nlhe at the moment - gametype = ["ring", "hold", "nl"] + # Inspect the handText and return the gametype dict + # gametype dict is: {'limitType': xxx, 'base': xxx, 'category': xxx} + info = {} m = self.re_HandInfo.search(handText) if not m: @@ -90,10 +121,20 @@ class OnGame(HandHistoryConverter): log.error(_("determineGameType: Raising FpdbParseError")) raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) - gametype = gametype + [m.group('SB')] - gametype = gametype + [m.group('BB')] - - return gametype + mg = m.groupdict() + + info['type'] = 'ring' + + if 'LIMIT' in mg: + info['limitType'] = self.limits[mg['LIMIT']] + if 'GAME' in mg: + (info['base'], info['category']) = self.games[mg['GAME']] + if 'SB' in mg: + info['sb'] = mg['SB'] + if 'BB' in mg: + info['bb'] = mg['BB'] + + return info def readHandInfo(self, hand): m = self.re_HandInfo.search(hand.string) From c77cf551048de0de949b28549f3c4dcedd1bf2bd Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 18:05:25 +0800 Subject: [PATCH 204/641] OnGame: Fix readSupprtedGames and currency --- pyfpdb/OnGameToFpdb.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index 5f8e1683..da7e299a 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -107,7 +107,10 @@ class OnGame(HandHistoryConverter): re_sitsOut = re.compile('(?P.*) sits out') def readSupportedGames(self): - pass + return [ + ["ring", "hold", "fl"], + ["ring", "hold", "nl"], + ] def determineGameType(self, handText): # Inspect the handText and return the gametype dict @@ -124,6 +127,7 @@ class OnGame(HandHistoryConverter): mg = m.groupdict() info['type'] = 'ring' + info['currency'] = 'USD' if 'LIMIT' in mg: info['limitType'] = self.limits[mg['LIMIT']] From 8ffb984d259c8373f183a0ac8a66f67a16139e46 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 18:52:00 +0800 Subject: [PATCH 205/641] HHC: Better doco for readHandInfo --- pyfpdb/HandHistoryConverter.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 34619c40..6308b755 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -326,15 +326,28 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py. or None if we fail to get the info """ #TODO: which parts are optional/required? - # Read any of: - # HID HandID - # TABLE Table name - # SB small blind - # BB big blind - # GAMETYPE gametype - # YEAR MON DAY HR MIN SEC datetime - # BUTTON button seat number def readHandInfo(self, hand): abstract + """Read and set information about the hand being dealt, and set the correct + variables in the Hand object 'hand + + * hand.startTime - a datetime object + * hand.handid - The site identified for the hand - a string. + * hand.tablename + * hand.buttonpos + * hand.maxseats + * hand.mixed + + Tournament fields: + + * hand.tourNo - The site identified tournament id as appropriate - a string. + * hand.buyin + * hand.fee + * hand.buyinCurrency + * hand.koBounty + * hand.isKO + * hand.level + """ + #TODO: which parts are optional/required? # Needs to return a list of lists in the format # [['seat#', 'player1name', 'stacksize'] ['seat#', 'player2name', 'stacksize'] [...]] From 803f0fcaf8a97221a0c99cc27a4fa0eef08611c7 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 19:48:37 +0800 Subject: [PATCH 206/641] HHC: Documentation on readHandInfo() --- pyfpdb/HandHistoryConverter.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 6308b755..39ff3bf7 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -349,9 +349,22 @@ or None if we fail to get the info """ """ #TODO: which parts are optional/required? - # Needs to return a list of lists in the format - # [['seat#', 'player1name', 'stacksize'] ['seat#', 'player2name', 'stacksize'] [...]] def readPlayerStacks(self, hand): abstract + """This function is for identifying players at the table, and to pass the + information on to 'hand' via Hand.addPlayer(seat, name, chips) + + At the time of writing the reference function in the PS converter is: + log.debug("readPlayerStacks") + m = self.re_PlayerInfo.finditer(hand.handText) + for a in m: + hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH')) + + Which is pretty simple because the hand history format is consistent. Other hh formats aren't so nice. + + This is the appropriate place to identify players that are sitting out and ignore them + + *** NOTE: You may find this is a more appropriate place to set hand.maxseats *** + """ def compilePlayerRegexs(self): abstract """Compile dynamic regexes -- these explicitly match known player names and must be updated if a new player joins""" From d04e5e1a23369df7396ed21bef85b499449c179c Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 20:09:44 +0800 Subject: [PATCH 207/641] HHC: doco for compilePlayerRegexes --- pyfpdb/HandHistoryConverter.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 39ff3bf7..a521f248 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -367,7 +367,25 @@ or None if we fail to get the info """ """ def compilePlayerRegexs(self): abstract - """Compile dynamic regexes -- these explicitly match known player names and must be updated if a new player joins""" + """Compile dynamic regexes -- compile player dependent regexes. + + Depending on the ambiguity of lines you may need to match, and the complexity of + player names - we found that we needed to recompile some regexes for player actions so that they actually contained the player names. + + eg. + We need to match the ante line: + antes $1.00 + + But is actually named + + YesI antes $4000 - A perfectly legal playername + + Giving: + + YesI antes $4000 antes $1.00 + + Which without care in your regexes most people would match 'YesI' and not 'YesI antes $4000' + """ # Needs to return a MatchObject with group names identifying the streets into the Hand object # so groups are called by street names 'PREFLOP', 'FLOP', 'STREET2' etc From 7c5f4645f26435c4f8dea5ca27c929676507ea59 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 20:10:52 +0800 Subject: [PATCH 208/641] OnGame: More updates, primarily to readHandInfo --- pyfpdb/OnGameToFpdb.py | 78 ++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 29 deletions(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index da7e299a..39ddb906 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -81,11 +81,21 @@ class OnGame(HandHistoryConverter): (?P[.0-9]+) )? """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) + + # Wed Aug 18 19:45:30 GMT+0100 2010 + re_DateTime = re.compile(""" + [a-zA-Z]{3}\s + (?P[a-zA-Z]{3})\s + (?P[0-9]{2})\s + (?P[0-9]+):(?P[0-9]+):(?P[0-9]+)\sGMT + (?P[-+]\d+)\s + (?P[0-9]{4}) + """, re.MULTILINE|re.VERBOSE) # self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P.*)\n') #Seat 1: .Lucchess ($4.17 in chips) - re_PlayerInfo = re.compile(u'Seat (?P[0-9]+): (?P.*) \((\$(?P[.0-9]+) in chips)\)') + re_PlayerInfo = re.compile(u'Seat (?P[0-9]+): (?P.*) \((?P[.0-9]+) \)') #ANTES/BLINDS #helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). @@ -106,6 +116,9 @@ class OnGame(HandHistoryConverter): re_CollectPot = re.compile('(?P.*), bets.+, collects \$(?P\d*\.?\d*), net.* ') re_sitsOut = re.compile('(?P.*) sits out') + def compilePlayerRegexs(self, hand): + pass + def readSupportedGames(self): return [ ["ring", "hold", "fl"], @@ -141,30 +154,37 @@ class OnGame(HandHistoryConverter): return info def readHandInfo(self, hand): - m = self.re_HandInfo.search(hand.string) - hand.handid = m.group('HID') - hand.tablename = m.group('TABLE') - #hand.buttonpos = self.rexx.button_re.search(hand.string).group('BUTTONPNAME') -# These work, but the info is already in the Hand class - should be used for tourneys though. -# m.group('SB') -# m.group('BB') -# m.group('GAMETYPE') + info = {} + m = self.re_HandInfo.search(hand.handText) -# Believe Everleaf time is GMT/UTC, no transation necessary -# Stars format (Nov 10 2008): 2008/11/07 12:38:49 CET [2008/11/07 7:38:49 ET] -# or : 2008/11/07 12:38:49 ET -# Not getting it in my HH files yet, so using -# 2008/11/10 3:58:52 ET -#TODO: Do conversion from GMT to ET -#TODO: Need some date functions to convert to different timezones (Date::Manip for perl rocked for this) - - hand.startTime = time.strptime(m.group('DATETIME'), "%d %b %Y %I:%M %p") - #hand.starttime = "%d/%02d/%02d %d:%02d:%02d ET" %(int(m.group('YEAR')), int(m.group('MON')), int(m.group('DAY')), - #int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC'))) + if m: + info.update(m.groupdict()) + + log.debug("readHandInfo: %s" % info) + for key in info: + if key == 'DATETIME': + #'Wed Aug 18 19:45:30 GMT+0100 2010 + # %a %b %d %H:%M:%S %z %Y + #hand.startTime = time.strptime(m.group('DATETIME'), "%a %b %d %H:%M:%S GMT%z %Y") + # Stupid library doesn't seem to support %z (http://docs.python.org/library/time.html?highlight=strptime#time.strptime) + # So we need to re-interpret te string to be useful + m1 = self.re_DateTime.finditer(info[key]) + for a in m1: + datetimestr = "%s %s %s %s:%s:%s" % (a.group('M'),a.group('D'), a.group('Y'), a.group('H'),a.group('MIN'),a.group('S')) + hand.startTime = time.strptime(datetimestr, "%b %d %Y %H:%M:%S") + # TODO: Manually adjust time against OFFSET + if key == 'HID': + hand.handid = info[key] + if key == 'TABLE': + hand.tablename = info[key] + + # TODO: These + hand.buttonpos = 1 + hand.maxseats = 10 + hand.mixed = None def readPlayerStacks(self, hand): - m = self.re_PlayerInf.finditer(hand.string) - players = [] + m = self.re_PlayerInfo.finditer(hand.handText) for a in m: hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH')) @@ -176,7 +196,7 @@ class OnGame(HandHistoryConverter): m = re.search(r"PRE-FLOP(?P.+(?=FLOP)|.+(?=SHOWDOWN))" r"(FLOP (?P\[board cards .+ \].+(?=TURN)|.+(?=SHOWDOWN)))?" r"(TURN (?P\[board cards .+ \].+(?=RIVER)|.+(?=SHOWDOWN)))?" - r"(RIVER (?P\[board cards .+ \].+(?=SHOWDOWN)))?", hand.string,re.DOTALL) + r"(RIVER (?P\[board cards .+ \].+(?=SHOWDOWN)))?", hand.handText, re.DOTALL) hand.addStreets(m) @@ -189,17 +209,17 @@ class OnGame(HandHistoryConverter): def readBlinds(self, hand): try: - m = self.re_PostSB.search(hand.string) + m = self.re_PostSB.search(hand.handText) hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB')) except: # no small blind hand.addBlind(None, None, None) - for a in self.re_PostBB.finditer(hand.string): + 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.string): + for a in self.re_PostBoth.finditer(hand.handText): hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB')) def readHeroCards(self, hand): - m = self.re_HeroCards.search(hand.string) + m = self.re_HeroCards.search(hand.handText) if(m == None): #Not involved in hand hand.involved = False @@ -230,13 +250,13 @@ class OnGame(HandHistoryConverter): # TODO: Everleaf does not record uncalled bets. def readShowdownActions(self, hand): - for shows in self.re_ShowdownAction.finditer(hand.string): + for shows in self.re_ShowdownAction.finditer(hand.handText): cards = shows.group('CARDS') cards = set(cards.split(',')) hand.addShownCards(cards, shows.group('PNAME')) def readCollectPot(self,hand): - for m in self.re_CollectPot.finditer(hand.string): + for m in self.re_CollectPot.finditer(hand.handText): hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT')) def readShownCards(self,hand): From 5d2e7cb32010891f621c31bb5a0c7e1f567f177d Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 20 Aug 2010 20:26:53 +0800 Subject: [PATCH 209/641] Betfair: Fix for Betfair 2.0 The Betfair poker site has changed hands/software and now has a completely different hand history coverter. Starting the process of making it work --- pyfpdb/BetfairToFpdb.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index 07ee2612..62db0311 100755 --- a/pyfpdb/BetfairToFpdb.py +++ b/pyfpdb/BetfairToFpdb.py @@ -44,8 +44,9 @@ class Betfair(HandHistoryConverter): siteId = 7 # Needs to match id entry in Sites database # Static regexes + #re_SplitHands = re.compile(r'\n\n+') # Betfair 1.0 version re_GameInfo = re.compile("^(?PNL|PL|) (?P\$|)?(?P[.0-9]+)/\$?(?P[.0-9]+) (?P(Texas Hold\'em|Omaha Hi|Razz))", re.MULTILINE) - re_SplitHands = re.compile(r'\n\n+') + re_SplitHands = re.compile(r'End of hand .{2}-\d{7,9}-\d+ \*\*\*\*\*\n') re_HandInfo = re.compile("\*\*\*\*\* Betfair Poker Hand History for Game (?P[0-9]+) \*\*\*\*\*\n(?PNL|PL|) (?P\$|)?(?P[.0-9]+)/\$?(?P[.0-9]+) (?P(Texas Hold\'em|Omaha Hi|Razz)) - (?P[a-zA-Z]+, [a-zA-Z]+ \d+, \d\d:\d\d:\d\d GMT \d\d\d\d)\nTable (?P
[ a-zA-Z0-9]+) \d-max \(Real Money\)\nSeat (?P
[\'\w]+)\s\[\d+\]\s\( + Table:\s(?P
[\'\w\s]+)\s\[\d+\]\s\( ( (?PNo\sLimit|Limit|LIMIT|Pot\sLimit)\s (?PTEXAS_HOLDEM|RAZZ)\s From 09f3205e770c23dfb647b1c796f98bd3d36cbf4f Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 01:30:33 +0200 Subject: [PATCH 228/641] update email config section as discussed on ML --- pyfpdb/Configuration.py | 46 +++++++++-------- pyfpdb/GuiImapFetcher.py | 94 +++++++++++++++++------------------ pyfpdb/HUD_config.xml.example | 5 +- 3 files changed, 72 insertions(+), 73 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 29b74b54..7e49d12d 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -256,6 +256,20 @@ class Layout: return temp + "\n" +class Email: + def __init__(self, node): + self.node = node + self.host= node.getAttribute("host") + self.username = node.getAttribute("username") + self.password = node.getAttribute("password") + self.useSsl = node.getAttribute("useSsl") + self.folder = node.getAttribute("folder") + self.fetchType = node.getAttribute("fetchType") + + def __str__(self): + return " fetchType=%s\n host = %s\n username = %s\n password = %s\n useSsl = %s\n folder = %s\n" \ + % (self.fetchType, self.host, self.username, self.password, self.useSsl, self.folder) + class Site: def __init__(self, node): def normalizePath(path): @@ -284,12 +298,17 @@ class Site: self.xshift = node.getAttribute("xshift") self.yshift = node.getAttribute("yshift") self.layout = {} + self.emails = {} print _("Loading site"), self.site_name for layout_node in node.getElementsByTagName('layout'): lo = Layout(layout_node) self.layout[lo.max] = lo + + for email_node in node.getElementsByTagName('email'): + email = Email(email_node) + self.emails[email.fetchType] = email # Site defaults self.xpad = 1 if self.xpad == "" else int(self.xpad) @@ -467,21 +486,6 @@ class Import: return " interval = %s\n callFpdbHud = %s\n hhArchiveBase = %s\n saveActions = %s\n fastStoreHudCache = %s\n" \ % (self.interval, self.callFpdbHud, self.hhArchiveBase, self.saveActions, self.fastStoreHudCache) -class Email: - def __init__(self, node): - self.node = node - self.host= node.getAttribute("host") - self.username = node.getAttribute("username") - self.password = node.getAttribute("password") - self.useSsl = node.getAttribute("useSsl") - self.folder = node.getAttribute("folder") - self.siteName = node.getAttribute("siteName") - self.fetchType = node.getAttribute("fetchType") - - def __str__(self): - return " siteName=%s\n fetchType=%s\n host = %s\n username = %s\n password = %s\n useSsl = %s\n folder = %s\n" \ - % (self.siteName, self.fetchType, self.host, self.username, self.password, self.useSsl, self.folder) - class HudUI: def __init__(self, node): self.node = node @@ -716,11 +720,6 @@ class Config: imp = Import(node = imp_node) self.imp = imp - for email_node in doc.getElementsByTagName("email"): - email = Email(node = email_node) - if email.siteName!="": #FIXME: Why on earth is this needed? - self.emails[email.siteName+"_"+email.fetchType]=email - for hui_node in doc.getElementsByTagName('hud_ui'): hui = HudUI(node = hui_node) self.ui = hui @@ -767,9 +766,12 @@ class Config: return site_node def getEmailNode(self, siteName, fetchType): - for emailNode in self.doc.getElementsByTagName("email"): - if emailNode.getAttribute("siteName") == siteName and emailNode.getAttribute("fetchType") == fetchType: + siteNode = self.get_site_node(siteName) + for emailNode in siteNode.getElementsByTagName("email"): + if emailNode.getAttribute("fetchType") == fetchType: + print "found emailNode" return emailNode + break #end def getEmailNode def getGameNode(self,gameName): diff --git a/pyfpdb/GuiImapFetcher.py b/pyfpdb/GuiImapFetcher.py index b9391daa..7294086a 100644 --- a/pyfpdb/GuiImapFetcher.py +++ b/pyfpdb/GuiImapFetcher.py @@ -72,19 +72,14 @@ class GuiImapFetcher (threading.Thread): siteName=columns[0].get_text() fetchType=columns[1].get_text() - code=siteName+"_"+fetchType - for email in self.config.emails: - toSave=self.config.emails[email] - break - toSave.siteName=siteName - toSave.fetchType=fetchType + toSave=self.config.supported_sites[siteName].emails[fetchType] toSave.host=columns[2].get_text() toSave.username=columns[3].get_text() if columns[4].get_text()=="***": - toSave.password=self.passwords[code] + toSave.password=self.passwords[siteName+fetchType] else: toSave.password=columns[4].get_text() @@ -101,16 +96,17 @@ class GuiImapFetcher (threading.Thread): def importAllClicked(self, widget, data=None): self.statusLabel.set_label(_("Starting import. Please wait.")) #FIXME: why doesnt this one show? - for email in self.config.emails: - try: - result=ImapFetcher.run(self.config.emails[email], self.db) - self.statusLabel.set_label(_("Finished import without error.")) - except IMAP4.error as error: - if str(error)=="[AUTHENTICATIONFAILED] Authentication failed.": - self.statusLabel.set_label(_("Login to mailserver failed: please check mailserver, username and password")) - except gaierror as error: - if str(error)=="[Errno -2] Name or service not known": - self.statusLabel.set_label(_("Could not connect to mailserver: check mailserver and use SSL settings and internet connectivity")) + for siteName in self.config.supported_sites: + for fetchType in self.config.supported_sites[siteName].emails: + try: + result=ImapFetcher.run(self.config.supported_sites[siteName].emails[fetchType], self.db) + self.statusLabel.set_label(_("Finished import without error.")) + except IMAP4.error as error: + if str(error)=="[AUTHENTICATIONFAILED] Authentication failed.": + self.statusLabel.set_label(_("Login to mailserver failed: please check mailserver, username and password")) + except gaierror as error: + if str(error)=="[Errno -2] Name or service not known": + self.statusLabel.set_label(_("Could not connect to mailserver: check mailserver and use SSL settings and internet connectivity")) #def importAllClicked def get_vbox(self): @@ -128,38 +124,42 @@ class GuiImapFetcher (threading.Thread): self.rowVBox = gtk.VBox() self.mainVBox.add(self.rowVBox) - for email in self.config.emails: - config=self.config.emails[email] - box=gtk.HBox(homogeneous=True) - - for field in (config.siteName, config.fetchType): - label=gtk.Label(field) - box.add(label) - - for field in (config.host, config.username): + for siteName in self.config.supported_sites: + for fetchType in self.config.supported_sites[siteName].emails: + config=self.config.supported_sites[siteName].emails[fetchType] + box=gtk.HBox(homogeneous=True) + + for field in (siteName, config.fetchType): + label=gtk.Label(field) + box.add(label) + + for field in (config.host, config.username): + entry=gtk.Entry() + entry.set_text(field) + box.add(entry) + entry=gtk.Entry() - entry.set_text(field) + self.passwords[siteName+fetchType]=config.password + entry.set_text("***") box.add(entry) - - entry=gtk.Entry() - self.passwords[email]=config.password - entry.set_text("***") - box.add(entry) - - entry=gtk.Entry() - entry.set_text(config.folder) - box.add(entry) - - sslBox = gtk.combo_box_new_text() - sslBox.append_text(_("Yes")) - sslBox.append_text(_("No")) - sslBox.set_active(0) - box.add(sslBox) - - #TODO: "run just this one" button - - self.rowVBox.pack_start(box, expand=False) - #print + + entry=gtk.Entry() + entry.set_text(config.folder) + box.add(entry) + + sslBox = gtk.combo_box_new_text() + sslBox.append_text(_("Yes")) + sslBox.append_text(_("No")) + if config.useSsl: + sslBox.set_active(0) + else: + sslBox.set_active(1) + box.add(sslBox) + + #TODO: "run just this one" button + + self.rowVBox.pack_start(box, expand=False) + #print self.mainVBox.show_all() #end def displayConfig diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index e95db1b8..58e12f42 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -156,6 +156,7 @@ Left-Drag to Move" xshift="0" yshift="0" supported_games="holdem,razz,omahahi,omahahilo,studhi,studhilo"> + @@ -708,10 +709,6 @@ Left-Drag to Move" - - - - From fa6da55618b81067c967392524f8cc5c88175015 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 04:18:00 +0200 Subject: [PATCH 229/641] remove table viewer config handling from code --- pyfpdb/Configuration.py | 28 ---------------------------- pyfpdb/fpdb.pyw | 1 - 2 files changed, 29 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 7e49d12d..59fe2a2e 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -508,16 +508,6 @@ class HudUI: return " label = %s\n" % self.label -class Tv: - def __init__(self, node): - self.combinedStealFold = string_to_bool(node.getAttribute("combinedStealFold"), default=True) - self.combined2B3B = string_to_bool(node.getAttribute("combined2B3B"), default=True) - self.combinedPostflop = string_to_bool(node.getAttribute("combinedPostflop"), default=True) - - def __str__(self): - return (" combinedStealFold = %s\n combined2B3B = %s\n combinedPostflop = %s\n" % - (self.combinedStealFold, self.combined2B3B, self.combinedPostflop) ) - class General(dict): def __init__(self): super(General, self).__init__() @@ -657,7 +647,6 @@ class Config: self.hhcs = {} self.popup_windows = {} self.db_selected = None # database the user would like to use - self.tv = None self.general = General() self.emails = {} self.gui_cash_stats = GUICashStats() @@ -724,9 +713,6 @@ class Config: hui = HudUI(node = hui_node) self.ui = hui - for tv_node in doc.getElementsByTagName("tv"): - self.tv = Tv(node = tv_node) - db = self.get_db_parameters() if db['db-password'] == 'YOUR MYSQL PASSWORD': df_file = self.find_default_conf() @@ -1012,15 +998,6 @@ class Config: return site_name return None - def get_tv_parameters(self): - if self.tv is not None: - return { - 'combinedStealFold': self.tv.combinedStealFold, - 'combined2B3B': self.tv.combined2B3B, - 'combinedPostflop': self.tv.combinedPostflop - } - return {} - # Allow to change the menu appearance def get_hud_ui_parameters(self): hui = {} @@ -1313,15 +1290,10 @@ if __name__== "__main__": print c.imp print "----------- END IMPORT -----------" - print "\n----------- TABLE VIEW -----------" -# print c.tv - print "----------- END TABLE VIEW -----------" - c.edit_layout("PokerStars", 6, locations=( (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6) )) c.save(file="testout.xml") print "db = ", c.get_db_parameters() -# print "tv = ", c.get_tv_parameters() # print "imp = ", c.get_import_parameters() print "paths = ", c.get_default_paths("PokerStars") print "colors = ", c.get_default_colors("PokerStars") diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 1aefebd5..ba8e5737 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -888,7 +888,6 @@ class fpdb: self.settings.update({'cl_options': cl_options}) self.settings.update(self.config.get_db_parameters()) - self.settings.update(self.config.get_tv_parameters()) self.settings.update(self.config.get_import_parameters()) self.settings.update(self.config.get_default_paths()) From ccec82886711b10766f9bbc31c6cce78cd98c299 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 04:36:23 +0200 Subject: [PATCH 230/641] add config sections for RawHands/Tourneys --- pyfpdb/Configuration.py | 65 ++++++++++++++++++++++++++++++++++- pyfpdb/HUD_config.xml.example | 4 +++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 59fe2a2e..2d3f864f 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -594,6 +594,58 @@ class GUICashStats(list): # s = s + " %s = %s\n" % (k, self[k]) # return(s) +class RawHands: + def __init__(self, node=None): + if node==None: + self.save="error" + self.compression="none" + print _("missing config section raw_hands") + else: + save=node.getAttribute("save") + if save in ("none", "error", "all"): + self.save=save + else: + print _("Invalid config value for raw_hands.save, defaulting to \"error\"") + self.save="error" + + compression=node.getAttribute("compression") + if save in ("none", "gzip", "bzip2"): + self.compression=compression + else: + print _("Invalid config value for raw_hands.compression, defaulting to \"none\"") + self.compression="none" + #end def __init__ + + def __str__(self): + return " save= %s, compression= %s\n" % (self.save, self.compression) +#end class RawHands + +class RawTourneys: + def __init__(self, node=None): + if node==None: + self.save="error" + self.compression="none" + print _("missing config section raw_tourneys") + else: + save=node.getAttribute("save") + if save in ("none", "error", "all"): + self.save=save + else: + print _("Invalid config value for raw_tourneys.save, defaulting to \"error\"") + self.save="error" + + compression=node.getAttribute("compression") + if save in ("none", "gzip", "bzip2"): + self.compression=compression + else: + print _("Invalid config value for raw_tourneys.compression, defaulting to \"none\"") + self.compression="none" + #end def __init__ + + def __str__(self): + return " save= %s, compression= %s\n" % (self.save, self.compression) +#end class RawTourneys + class Config: def __init__(self, file = None, dbname = ''): # "file" is a path to an xml file with the fpdb/HUD configuration @@ -724,8 +776,19 @@ class Config: db_user = df_parms['db-user'], db_pass = df_parms['db-password']) self.save(file=os.path.join(self.default_config_path, "HUD_config.xml")) - + + if doc.getElementsByTagName("raw_hands") == []: + self.raw_hands = RawHands() + for raw_hands_node in doc.getElementsByTagName('raw_hands'): + self.raw_hands = RawHands(raw_hands_node) + + if doc.getElementsByTagName("raw_tourneys") == []: + self.raw_tourneys = RawTourneys() + for raw_tourneys_node in doc.getElementsByTagName('raw_tourneys'): + self.raw_tourneys = RawTourneys(raw_tourneys_node) + print "" + #end def __init__ def set_hhArchiveBase(self, path): self.imp.node.setAttribute("hhArchiveBase", path) diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index 58e12f42..c2a47419 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -705,6 +705,10 @@ Left-Drag to Move" + + + + From a4e3d0c514016f2be2c5dd293630452c43ec5bc3 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 05:02:22 +0200 Subject: [PATCH 231/641] a missing gettextification from a recent patch --- pyfpdb/Configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 2d3f864f..b5afcf5a 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -110,7 +110,7 @@ def get_config(file_name, fallback = True): example_path = '/usr/share/python-fpdb/' + file_name + '.example' try: shutil.copyfile(example_path, config_path) - msg = 'Configuration file created: %s\n' % config_path + msg = _("Config file has been created at %s.\n") % config_path logging.info(msg) return (config_path,False) except IOError: From fb6c5c7ec66b2a750e798390841e6acbe0a64fcd Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 06:46:29 +0200 Subject: [PATCH 232/641] fix to recognise different spelling of FT headsup --- pyfpdb/FulltiltToFpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 4d7a7b62..a3526ca0 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -260,7 +260,7 @@ class Fulltilt(HandHistoryConverter): hand.isRebuy = True if special == "KO": hand.isKO = True - if special == "Head's Up": + if special == "Head's Up" or special == "Heads Up": hand.maxSeats = 2 if re.search("Matrix", special): hand.isMatrix = True From aabc9d20065342c9fa01c93dc6fc2f21fdcfad6c Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 06:46:47 +0200 Subject: [PATCH 233/641] actually store TT.maxSeats --- pyfpdb/Database.py | 8 +++++--- pyfpdb/SQL.py | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index ec670b1b..de32791f 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -2062,8 +2062,9 @@ class Database: #print "info that we use to get TT by detail:", hand.siteId, hand.buyinCurrency, hand.buyin, hand.fee, hand.gametype['category'], hand.gametype['limitType'], hand.isKO, hand.isRebuy, hand.isAddOn, hand.speed, hand.isShootout, hand.isMatrix #print "the query:",self.sql.query['getTourneyTypeId'].replace('%s', self.sql.query['placeholder']) cursor.execute (self.sql.query['getTourneyTypeId'].replace('%s', self.sql.query['placeholder']), - (hand.siteId, hand.buyinCurrency, hand.buyin, hand.fee, hand.gametype['category'], hand.gametype['limitType'], hand.isKO, - hand.isRebuy, hand.isAddOn, hand.speed, hand.isShootout, hand.isMatrix) #TODO: add koamount + (hand.siteId, hand.buyinCurrency, hand.buyin, hand.fee, hand.gametype['category'], + hand.gametype['limitType'], hand.maxSeats, hand.isKO, + hand.isRebuy, hand.isAddOn, hand.speed, hand.isShootout, hand.isMatrix) ) result=cursor.fetchone() #print "result of fetching TT by details:",result @@ -2072,7 +2073,8 @@ class Database: tourneyTypeId = result[0] except TypeError: #this means we need to create a new entry cursor.execute (self.sql.query['insertTourneyType'].replace('%s', self.sql.query['placeholder']), - (hand.siteId, hand.buyinCurrency, hand.buyin, hand.fee, hand.gametype['category'], hand.gametype['limitType'], + (hand.siteId, hand.buyinCurrency, hand.buyin, hand.fee, hand.gametype['category'], + hand.gametype['limitType'], hand.maxSeats, hand.buyInChips, hand.isKO, hand.koBounty, hand.isRebuy, hand.isAddOn, hand.speed, hand.isShootout, hand.isMatrix, hand.added, hand.addedCurrency) ) diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index c6a2e91d..57eb8c35 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -3968,6 +3968,7 @@ class Sql: AND fee=%s AND category=%s AND limitType=%s + AND maxSeats=%s AND knockout=%s AND rebuy=%s AND addOn=%s @@ -3977,9 +3978,9 @@ class Sql: """ self.query['insertTourneyType'] = """INSERT INTO TourneyTypes - (siteId, currency, buyin, fee, category, limitType, buyInChips, knockout, koBounty, rebuy, + (siteId, currency, buyin, fee, category, limitType, maxSeats, buyInChips, knockout, koBounty, rebuy, addOn ,speed, shootout, matrix, added, addedCurrency) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ self.query['getTourneyByTourneyNo'] = """SELECT t.* From 4fcc157ff854f07d20b2308e932a2149afc4e84a Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 07:25:07 +0200 Subject: [PATCH 234/641] update empty and 0001 dump for DB v143 --- ...ax-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql | 13 +++++++++++-- pyfpdb/regression-test-files/empty_DB.0000.sql | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql index e8ee0bd7..f18d8a7e 100644 --- a/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql @@ -1,5 +1,5 @@ fpdb database dump -DB version=142 +DB version=143 ################### Table Autorates @@ -1643,11 +1643,20 @@ Table Players comment=None commentTs=None +################### +Table RawHands +################### +empty table + +################### +Table RawTourneys +################### +empty table ################### Table Settings ################### - version=142 + version=143 ################### diff --git a/pyfpdb/regression-test-files/empty_DB.0000.sql b/pyfpdb/regression-test-files/empty_DB.0000.sql index 7e43b4a0..6c812924 100644 --- a/pyfpdb/regression-test-files/empty_DB.0000.sql +++ b/pyfpdb/regression-test-files/empty_DB.0000.sql @@ -1,5 +1,5 @@ fpdb database dump -DB version=142 +DB version=143 ################### Table Autorates @@ -41,10 +41,20 @@ Table Players ################### empty table +################### +Table RawHands +################### +empty table + +################### +Table RawTourneys +################### +empty table + ################### Table Settings ################### - version=142 + version=143 ################### From 6ba7f36a0e08594f4f6b4399654d13d104899540 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 07:32:10 +0200 Subject: [PATCH 235/641] fix import of tourneys --- pyfpdb/Database.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index de32791f..d5b06543 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -2063,7 +2063,7 @@ class Database: #print "the query:",self.sql.query['getTourneyTypeId'].replace('%s', self.sql.query['placeholder']) cursor.execute (self.sql.query['getTourneyTypeId'].replace('%s', self.sql.query['placeholder']), (hand.siteId, hand.buyinCurrency, hand.buyin, hand.fee, hand.gametype['category'], - hand.gametype['limitType'], hand.maxSeats, hand.isKO, + hand.gametype['limitType'], hand.maxseats, hand.isKO, hand.isRebuy, hand.isAddOn, hand.speed, hand.isShootout, hand.isMatrix) ) result=cursor.fetchone() @@ -2074,7 +2074,7 @@ class Database: except TypeError: #this means we need to create a new entry cursor.execute (self.sql.query['insertTourneyType'].replace('%s', self.sql.query['placeholder']), (hand.siteId, hand.buyinCurrency, hand.buyin, hand.fee, hand.gametype['category'], - hand.gametype['limitType'], hand.maxSeats, + hand.gametype['limitType'], hand.maxseats, hand.buyInChips, hand.isKO, hand.koBounty, hand.isRebuy, hand.isAddOn, hand.speed, hand.isShootout, hand.isMatrix, hand.added, hand.addedCurrency) ) From 79c81ee99742618110f03e0cf3bd4957bd51346a Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 07:39:49 +0200 Subject: [PATCH 236/641] fix HHC for PS/FT --- pyfpdb/HandHistoryConverter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index af758352..860d05e1 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -587,6 +587,7 @@ or None if we fail to get the info """ offset = int(givenTimezone[-5:]) givenTimezone = givenTimezone[0:-5] log.debug( _("changeTimeZone: offset=") + str(offset) ) + else: offset=0 if givenTimezone=="ET": givenTZ = timezone('US/Eastern') From b06c7763d8027409c50bff500c93aa02d623350b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 07:54:03 +0200 Subject: [PATCH 237/641] dumpDB stores ignore for importTime and styleKey as those are runtime-dependant and outside of its scope --- pyfpdb/Database.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index d5b06543..f1b8dd72 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -321,7 +321,12 @@ class Database: else: for row in rows: for columnNumber in range(len(columnNames)): - result+=(" "+columnNames[columnNumber][0]+"="+str(row[columnNumber])+"\n") + if columnNames[columnNumber][0]=="importTime": + result+=(" "+columnNames[columnNumber][0]+"=ignore\n") + elif columnNames[columnNumber][0]=="styleKey": + result+=(" "+columnNames[columnNumber][0]+"=ignore\n") + else: + result+=(" "+columnNames[columnNumber][0]+"="+str(row[columnNumber])+"\n") result+="\n" result+="\n" return result From e0a2c4e0b4b05e31ed5546d8abd6231a76427bf4 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 22 Aug 2010 07:54:37 +0200 Subject: [PATCH 238/641] more dump data updates --- ...-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql | 1 + ...-USD-STT-5-20100607.allInPreflop.txt.0002.sql | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql index f18d8a7e..164ff4fe 100644 --- a/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/LHE-10max-USD-0.05-0.10-PF_all_fold_to_BB.txt.0001.sql @@ -1643,6 +1643,7 @@ Table Players comment=None commentTs=None + ################### Table RawHands ################### diff --git a/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql b/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql index 7f0a00cc..776e1032 100644 --- a/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql +++ b/pyfpdb/regression-test-files/tour/Stars/Flop/LHE-USD-STT-5-20100607.allInPreflop.txt.0002.sql @@ -1,5 +1,5 @@ fpdb database dump -DB version=142 +DB version=143 ################### Table Autorates @@ -1857,7 +1857,6 @@ Table HandsPlayers street4Raises=0 actionString=None -!!!verified to here ################### Table HudCache ################### @@ -2557,6 +2556,7 @@ Table HudCache street3Raises=0 street4Raises=0 +!!!verified to here id=9 gametypeId=2 playerId=1 @@ -3441,10 +3441,20 @@ Table Players commentTs=None +################### +Table RawHands +################### +empty table + +################### +Table RawTourneys +################### +empty table + ################### Table Settings ################### - version=142 + version=143 ################### From b4a08af2b1ec56be83280ad12d4359c645b3d0b3 Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Sun, 22 Aug 2010 13:09:26 +0300 Subject: [PATCH 239/641] Remove trailing percent symbols from HUD values The values that are displayed in the HUD box included the '%' symbol if these values were percentages. This clutters the HUD for those who don't need such extra characters. This patch removes the trailing '%' from result[1]. The default formatting for HUD values is '%3.1f' and if decimal places need to be changed, the code for those is now simpler. A user who wishes to show a percent symbol after any given stat value, can edit HUD_config.xml and assign such stats the hudsuffix="%" attribute. This patch also changes the way the tooltip strings are constructed. Instead of appending the percent symbol to generated string, the '%' is now generated in place by the format-string stanza '%%'. --- pyfpdb/Stats.py | 457 +++++++++++++++++++++++------------------------- 1 file changed, 221 insertions(+), 236 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index ffb1e47e..22900da8 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -78,7 +78,6 @@ log = logging.getLogger("db") re_Places = re.compile("_[0-9]$") -re_Percent = re.compile("%$") # String manipulation import codecs @@ -88,35 +87,21 @@ def do_tip(widget, tip): _tip = Charset.to_utf8(tip) widget.set_tooltip_text(_tip) + def do_stat(stat_dict, player = 24, stat = 'vpip'): match = re_Places.search(stat) - if match is None: - result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) - else: + result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) + + # If decimal places have been defined, override result[1] + if match: base = stat[0:-2] places = int(stat[-1:]) - result = (0.0, '0.0', 'notset=0', 'notset=0', '0', 'not set') - try: - result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': base, 'player': player}) - except: - pass # - log.info(_("exception getting stat %s for player %s %s") % (base, str(player), str(sys.exc_info()))) - log.debug(_("Stats.do_stat result = %s") % str(result) ) - - match = re_Percent.search(result[1]) - try: - if match is None: - result = (result[0], "%.*f" % (places, result[0]), result[2], result[3], result[4], result[5]) - else: - result = (result[0], "%.*f%%" % (places, 100*result[0]), result[2], result[3], result[4], result[5]) - except: - log.info(_("error: %s") % str(sys.exc_info())) - raise + result[1] = '%.*f' % (places, 100.0*result[0]) return result # OK, for reference the tuple returned by the stat is: # 0 - The stat, raw, no formating, eg 0.33333333 -# 1 - formatted stat with appropriate precision and punctuation, eg 33% +# 1 - formatted stat with appropriate precision, eg. 33; shown in HUD # 2 - formatted stat with appropriate precision, punctuation and a hint, eg v=33% # 3 - same as #2 except name of stat instead of hint, eg vpip=33% # 4 - the calculation that got the stat, eg 9/27 @@ -147,17 +132,17 @@ def vpip(stat_dict, player): try: stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n']) return (stat, - '%3.1f' % (100*stat) + '%', - 'v=%3.1f' % (100*stat) + '%', - 'vpip=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']), + '%3.1f' % (100.0*stat), + 'v=%3.1f%%' % (100.0*stat), + 'vpip=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']), _('Voluntarily Put In Pot Pre-Flop%') ) except: return (stat, - '%3.1f' % (0) + '%', - 'v=%3.1f' % (0) + '%', - 'vpip=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'v=%3.1f%%' % (0), + 'vpip=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Voluntarily Put In Pot Pre-Flop%') ) @@ -167,18 +152,18 @@ def pfr(stat_dict, player): try: stat = float(stat_dict[player]['pfr'])/float(stat_dict[player]['n']) return (stat, - '%3.1f' % (100*stat) + '%', - 'p=%3.1f' % (100*stat) + '%', - 'pfr=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'p=%3.1f%%' % (100.0*stat), + 'pfr=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['pfr'], stat_dict[player]['n']), _('Pre-Flop Raise %') ) except: return (stat, - '%3.1f' % (0) + '%', - 'p=%3.1f' % (0) + '%', - 'pfr=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'p=%3.1f%%' % (0), + 'pfr=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Pre-Flop Raise %') ) @@ -188,18 +173,18 @@ def wtsd(stat_dict, player): try: stat = float(stat_dict[player]['sd'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100*stat) + '%', - 'w=%3.1f' % (100*stat) + '%', - 'wtsd=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']), + '%3.1f' % (100.0*stat), + 'w=%3.1f%%' % (100.0*stat), + 'wtsd=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']), _('% went to showdown') ) except: return (stat, - '%3.1f' % (0) + '%', - 'w=%3.1f' % (0) + '%', - 'wtsd=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'w=%3.1f%%' % (0), + 'wtsd=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% went to showdown') ) @@ -209,18 +194,18 @@ def wmsd(stat_dict, player): try: stat = float(stat_dict[player]['wmsd'])/float(stat_dict[player]['sd']) return (stat, - '%3.1f' % (100*stat) + '%', - 'w=%3.1f' % (100*stat) + '%', - 'wmsd=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'w=%3.1f%%' % (100.0*stat), + 'wmsd=%3.1f%%' % (100.0*stat), '(%5.1f/%d)' % (float(stat_dict[player]['wmsd']), stat_dict[player]['sd']), _('% won money at showdown') ) except: return (stat, - '%3.1f' % (0) + '%', - 'w=%3.1f' % (0) + '%', - 'wmsd=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'w=%3.1f%%' % (0), + 'wmsd=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% won money at showdown') ) @@ -230,19 +215,19 @@ def profit100(stat_dict, player): try: stat = float(stat_dict[player]['net'])/float(stat_dict[player]['n']) return (stat, - '%.0f' % (100.0*stat), - 'p=%.0f' % (100.0*stat), - 'p/100=%.0f' % (100.0*stat), + '%.0f' % (100.0*stat), + 'p=%.0f' % (100.0*stat), + 'p/100=%.0f' % (100.0*stat), '%d/%d' % (stat_dict[player]['net'], stat_dict[player]['n']), _('profit/100hands') ) except: print _("exception calcing p/100: 100 * %d / %d") % (stat_dict[player]['net'], stat_dict[player]['n']) return (stat, - '%.0f' % (0.0), - 'p=%.0f' % (0.0), - 'p/100=%.0f' % (0.0), - '(%d/%d)' % (0, 0), + '%.0f' % (0.0), + 'p=%.0f' % (0.0), + 'p/100=%.0f' % (0.0), + '(%d/%d)' % (0, 0), _('profit/100hands') ) @@ -252,19 +237,19 @@ def bbper100(stat_dict, player): try: stat = 100.0 * float(stat_dict[player]['net']) / float(stat_dict[player]['bigblind']) return (stat, - '%5.3f' % (stat), - 'bb100=%5.3f' % (stat), - 'bb100=%5.3f' % (stat), - '(%d,%d)' % (100*stat_dict[player]['net'],stat_dict[player]['bigblind']), + '%5.3f' % (stat), + 'bb100=%5.3f' % (stat), + 'bb100=%5.3f' % (stat), + '(%d,%d)' % (100*stat_dict[player]['net'],stat_dict[player]['bigblind']), _('big blinds/100 hands') ) except: log.info("exception calcing bb/100: "+str(stat_dict[player])) return (stat, - '%.0f' % (0), - 'bb100=%.0f' % (0), - 'bb100=%.0f' % (0), - '(%f)' % (0), + '%.0f' % (0), + 'bb100=%.0f' % (0), + 'bb100=%.0f' % (0), + '(%f)' % (0), _('big blinds/100 hands') ) @@ -274,19 +259,19 @@ def BBper100(stat_dict, player): try: stat = 50 * float(stat_dict[player]['net']) / float(stat_dict[player]['bigblind']) return (stat, - '%5.3f' % (stat), - 'BB100=%5.3f' % (stat), - 'BB100=%5.3f' % (stat), - '(%d,%d)' % (100*stat_dict[player]['net'],2*stat_dict[player]['bigblind']), + '%5.3f' % (stat), + 'BB100=%5.3f' % (stat), + 'BB100=%5.3f' % (stat), + '(%d,%d)' % (100*stat_dict[player]['net'],2*stat_dict[player]['bigblind']), _('Big Bets/100 hands') ) except: log.info(_("exception calcing BB/100: ")+str(stat_dict[player])) return (stat, - '%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - '(%f)' % (0.0), + '%.0f' % (0.0), + 'BB100=%.0f' % (0.0), + 'BB100=%.0f' % (0.0), + '(%f)' % (0.0), _('Big Bets/100 hands') ) @@ -297,10 +282,10 @@ def saw_f(stat_dict, player): den = float(stat_dict[player]['n']) stat = num/den return (stat, - '%3.1f' % (100*stat) + '%', - 'sf=%3.1f' % (100*stat) + '%', - 'saw_f=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']), + '%3.1f' % (100.0*stat), + 'sf=%3.1f%%' % (100.0*stat), + 'saw_f=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']), _('Flop Seen %') ) except: @@ -308,10 +293,10 @@ def saw_f(stat_dict, player): num = 0 den = 0 return (stat, - '%3.1f' % (stat) + '%', - 'sf=%3.1f' % (stat) + '%', - 'saw_f=%3.1f' % (stat) + '%', - '(%d/%d)' % (num, den), + '%3.1f' % (stat), + 'sf=%3.1f%%' % (stat), + 'saw_f=%3.1f%%' % (stat), + '(%d/%d)' % (num, den), _('Flop Seen %') ) @@ -352,18 +337,18 @@ def fold_f(stat_dict, player): try: stat = float(stat_dict[player]['fold_2'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff=%3.1f' % (100*stat) + '%', - 'fold_f=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']), + '%3.1f' % (100.0*stat), + 'ff=%3.1f%%' % (100.0*stat), + 'fold_f=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']), _('folded flop/4th') ) except: return (stat, - '%3.1f' % (0) + '%', - 'ff=%3.1f' % (0) + '%', - 'fold_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff=%3.1f%%' % (0), + 'fold_f=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('folded flop/4th') ) @@ -373,10 +358,10 @@ def steal(stat_dict, player): try: stat = float(stat_dict[player]['steal'])/float(stat_dict[player]['steal_opp']) return (stat, - '%3.1f' % (100*stat) + '%', - 'st=%3.1f' % (100*stat) + '%', - 'steal=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']), + '%3.1f' % (100.0*stat), + 'st=%3.1f%%' % (100.0*stat), + 'steal=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']), _('% steal attempted') ) except: @@ -388,10 +373,10 @@ def f_SB_steal(stat_dict, player): try: stat = float(stat_dict[player]['sbnotdef'])/float(stat_dict[player]['sbstolen']) return (stat, - '%3.1f' % (100*stat) + '%', - 'fSB=%3.1f' % (100*stat) + '%', - 'fSB_s=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['sbnotdef'], stat_dict[player]['sbstolen']), + '%3.1f' % (100.0*stat), + 'fSB=%3.1f%%' % (100.0*stat), + 'fSB_s=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['sbnotdef'], stat_dict[player]['sbstolen']), _('% folded SB to steal')) except: return (stat, @@ -407,10 +392,10 @@ def f_BB_steal(stat_dict, player): try: stat = float(stat_dict[player]['bbnotdef'])/float(stat_dict[player]['bbstolen']) return (stat, - '%3.1f' % (100*stat) + '%', - 'fBB=%3.1f' % (100*stat) + '%', - 'fBB_s=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']), + '%3.1f' % (100.0*stat), + 'fBB=%3.1f%%' % (100.0*stat), + 'fBB_s=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']), _('% folded BB to steal')) except: return (stat, @@ -429,10 +414,10 @@ def f_steal(stat_dict, player): stat = float(folded_blind)/float(blind_stolen) return (stat, - '%3.1f' % (100*stat) + '%', - 'fB=%3.1f' % (100*stat) + '%', - 'fB_s=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (folded_blind, blind_stolen), + '%3.1f' % (100.0*stat), + 'fB=%3.1f%%' % (100.0*stat), + 'fB_s=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (folded_blind, blind_stolen), _('% folded blind to steal')) except: return (stat, @@ -448,17 +433,17 @@ def three_B(stat_dict, player): try: stat = float(stat_dict[player]['tb_0'])/float(stat_dict[player]['tb_opp_0']) return (stat, - '%3.1f' % (100*stat) + '%', - '3B=%3.1f' % (100*stat) + '%', - '3B_pf=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), + '%3.1f' % (100.0*stat), + '3B=%3.1f%%' % (100.0*stat), + '3B_pf=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), _('% 3/4 Bet preflop/3rd')) except: return (stat, - '%3.1f' % (0) + '%', - '3B=%3.1f' % (0) + '%', - '3B_pf=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + '3B=%3.1f%%' % (0), + '3B_pf=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% 3/4 Bet preflop/3rd')) def WMsF(stat_dict, player): @@ -467,17 +452,17 @@ def WMsF(stat_dict, player): try: stat = float(stat_dict[player]['w_w_s_1'])/float(stat_dict[player]['saw_1']) return (stat, - '%3.1f' % (100*stat) + '%', - 'wf=%3.1f' % (100*stat) + '%', - 'w_w_f=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']), + '%3.1f' % (100.0*stat), + 'wf=%3.1f%%' % (100.0*stat), + 'w_w_f=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']), _('% won$/saw flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'wf=%3.1f' % (0) + '%', - 'w_w_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'wf=%3.1f%%' % (0), + 'w_w_f=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% won$/saw flop/4th')) def a_freq1(stat_dict, player): @@ -486,17 +471,17 @@ def a_freq1(stat_dict, player): try: stat = float(stat_dict[player]['aggr_1'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a1=%3.1f' % (100*stat) + '%', - 'a_fq_1=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'a1=%3.1f%%' % (100.0*stat), + 'a_fq_1=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['aggr_1'], stat_dict[player]['saw_f']), _('Aggression Freq flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a1=%3.1f' % (0) + '%', - 'a_fq_1=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a1=%3.1f%%' % (0), + 'a_fq_1=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq flop/4th')) def a_freq2(stat_dict, player): @@ -505,17 +490,17 @@ def a_freq2(stat_dict, player): try: stat = float(stat_dict[player]['aggr_2'])/float(stat_dict[player]['saw_2']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a2=%3.1f' % (100*stat) + '%', - 'a_fq_2=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']), + '%3.1f' % (100.0*stat), + 'a2=%3.1f%%' % (100.0*stat), + 'a_fq_2=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']), _('Aggression Freq turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a2=%3.1f' % (0) + '%', - 'a_fq_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a2=%3.1f%%' % (0), + 'a_fq_2=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq turn/5th')) def a_freq3(stat_dict, player): @@ -524,17 +509,17 @@ def a_freq3(stat_dict, player): try: stat = float(stat_dict[player]['aggr_3'])/float(stat_dict[player]['saw_3']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a3=%3.1f' % (100*stat) + '%', - 'a_fq_3=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'a3=%3.1f%%' % (100.0*stat), + 'a_fq_3=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['aggr_3'], stat_dict[player]['saw_3']), _('Aggression Freq river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a3=%3.1f' % (0) + '%', - 'a_fq_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a3=%3.1f%%' % (0), + 'a_fq_3=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq river/6th')) def a_freq4(stat_dict, player): @@ -543,17 +528,17 @@ def a_freq4(stat_dict, player): try: stat = float(stat_dict[player]['aggr_4'])/float(stat_dict[player]['saw_4']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a4=%3.1f' % (100*stat) + '%', - 'a_fq_4=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']), + '%3.1f' % (100.0*stat), + 'a4=%3.1f%%' % (100.0*stat), + 'a_fq_4=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']), _('Aggression Freq 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a4=%3.1f' % (0) + '%', - 'a_fq_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a4=%3.1f%%' % (0), + 'a_fq_4=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq 7th')) def a_freq_123(stat_dict, player): @@ -563,9 +548,9 @@ def a_freq_123(stat_dict, player): stat = float( stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] ) / float( stat_dict[player]['saw_1'] + stat_dict[player]['saw_2'] + stat_dict[player]['saw_3']); return (stat, - '%3.1f' % (100*stat) + '%', - 'afq=%3.1f' % (100*stat) + '%', - 'postf_aggfq=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'afq=%3.1f%%' % (100.0*stat), + 'postf_aggfq=%3.1f%%' % (100.0*stat), '(%d/%d)' % ( stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] @@ -576,10 +561,10 @@ def a_freq_123(stat_dict, player): _('Post-Flop Aggression Freq')) except: return (stat, - '%2.0f' % (0) + '%', - 'a3=%2.0f' % (0) + '%', - 'a_fq_3=%2.0f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%2.0f' % (0), + 'a3=%2.0f%%' % (0), + 'a_fq_3=%2.0f%%' % (0), + '(%d/%d)' % (0, 0), _('Post-Flop Aggression Freq')) def agg_freq(stat_dict, player): @@ -597,17 +582,17 @@ def agg_freq(stat_dict, player): stat = float (bet_raise) / float(post_call + post_fold + bet_raise) return (stat, - '%3.1f' % (100*stat) + '%', - 'afr=%3.1f' % (100*stat) + '%', - 'agg_fr=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)), + '%3.1f' % (100.0*stat), + 'afr=%3.1f%%' % (100.0*stat), + 'agg_fr=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)), _('Aggression Freq')) except: return (stat, - '%2.1f' % (0) + '%', - 'af=%3.1f' % (0) + '%', - 'agg_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%2.1f' % (0), + 'af=%3.1f%%' % (0), + 'agg_f=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq')) def agg_fact(stat_dict, player): @@ -647,17 +632,17 @@ def cbet(stat_dict, player): oppt = stat_dict[player]['cb_opp_1']+stat_dict[player]['cb_opp_2']+stat_dict[player]['cb_opp_3']+stat_dict[player]['cb_opp_4'] stat = float(cbets)/float(oppt) return (stat, - '%3.1f' % (100*stat) + '%', - 'cbet=%3.1f' % (100*stat) + '%', - 'cbet=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (cbets, oppt), + '%3.1f' % (100.0*stat), + 'cbet=%3.1f%%' % (100.0*stat), + 'cbet=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (cbets, oppt), _('% continuation bet ')) except: return (stat, - '%3.1f' % (0) + '%', - 'cbet=%3.1f' % (0) + '%', - 'cbet=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cbet=%3.1f%%' % (0), + 'cbet=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet ')) def cb1(stat_dict, player): @@ -666,17 +651,17 @@ def cb1(stat_dict, player): try: stat = float(stat_dict[player]['cb_1'])/float(stat_dict[player]['cb_opp_1']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb1=%3.1f' % (100*stat) + '%', - 'cb_1=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['cb_1'], stat_dict[player]['cb_opp_1']), + '%3.1f' % (100.0*stat), + 'cb1=%3.1f%%' % (100.0*stat), + 'cb_1=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['cb_1'], stat_dict[player]['cb_opp_1']), _('% continuation bet flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb1=%3.1f' % (0) + '%', - 'cb_1=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb1=%3.1f%%' % (0), + 'cb_1=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet flop/4th')) def cb2(stat_dict, player): @@ -685,17 +670,17 @@ def cb2(stat_dict, player): try: stat = float(stat_dict[player]['cb_2'])/float(stat_dict[player]['cb_opp_2']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb2=%3.1f' % (100*stat) + '%', - 'cb_2=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['cb_2'], stat_dict[player]['cb_opp_2']), + '%3.1f' % (100.0*stat), + 'cb2=%3.1f%%' % (100.0*stat), + 'cb_2=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['cb_2'], stat_dict[player]['cb_opp_2']), _('% continuation bet turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb2=%3.1f' % (0) + '%', - 'cb_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb2=%3.1f%%' % (0), + 'cb_2=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet turn/5th')) def cb3(stat_dict, player): @@ -704,17 +689,17 @@ def cb3(stat_dict, player): try: stat = float(stat_dict[player]['cb_3'])/float(stat_dict[player]['cb_opp_3']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb3=%3.1f' % (100*stat) + '%', - 'cb_3=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['cb_3'], stat_dict[player]['cb_opp_3']), + '%3.1f' % (100.0*stat), + 'cb3=%3.1f%%' % (100.0*stat), + 'cb_3=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['cb_3'], stat_dict[player]['cb_opp_3']), _('% continuation bet river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb3=%3.1f' % (0) + '%', - 'cb_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb3=%3.1f%%' % (0), + 'cb_3=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet river/6th')) def cb4(stat_dict, player): @@ -723,17 +708,17 @@ def cb4(stat_dict, player): try: stat = float(stat_dict[player]['cb_4'])/float(stat_dict[player]['cb_opp_4']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb4=%3.1f' % (100*stat) + '%', - 'cb_4=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'cb4=%3.1f%%' % (100.0*stat), + 'cb_4=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['cb_4'], stat_dict[player]['cb_opp_4']), _('% continuation bet 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb4=%3.1f' % (0) + '%', - 'cb_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb4=%3.1f%%' % (0), + 'cb_4=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet 7th')) def ffreq1(stat_dict, player): @@ -742,10 +727,10 @@ def ffreq1(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_1'])/float(stat_dict[player]['was_raised_1']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff1=%3.1f' % (100*stat) + '%', - 'ff_1=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']), + '%3.1f' % (100.0*stat), + 'ff1=%3.1f%%' % (100.0*stat), + 'ff_1=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']), _('% fold frequency flop/4th')) except: return (stat, @@ -761,17 +746,17 @@ def ffreq2(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_2'])/float(stat_dict[player]['was_raised_2']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff2=%3.1f' % (100*stat) + '%', - 'ff_2=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']), + '%3.1f' % (100.0*stat), + 'ff2=%3.1f%%' % (100.0*stat), + 'ff_2=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']), _('% fold frequency turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff2=%3.1f' % (0) + '%', - 'ff_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff2=%3.1f%%' % (0), + 'ff_2=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% fold frequency turn/5th')) def ffreq3(stat_dict, player): @@ -780,17 +765,17 @@ def ffreq3(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_3'])/float(stat_dict[player]['was_raised_3']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff3=%3.1f' % (100*stat) + '%', - 'ff_3=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']), + '%3.1f' % (100.0*stat), + 'ff3=%3.1f%%' % (100.0*stat), + 'ff_3=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']), _('% fold frequency river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff3=%3.1f' % (0) + '%', - 'ff_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff3=%3.1f%%' % (0), + 'ff_3=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% fold frequency river/6th')) def ffreq4(stat_dict, player): @@ -799,24 +784,24 @@ def ffreq4(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_4'])/float(stat_dict[player]['was_raised_4']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff4=%3.1f' % (100*stat) + '%', - 'ff_4=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']), + '%3.1f' % (100.0*stat), + 'ff4=%3.1f%%' % (100.0*stat), + 'ff_4=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']), _('% fold frequency 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff4=%3.1f' % (0) + '%', - 'ff_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff4=%3.1f%%' % (0), + 'ff_4=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% fold frequency 7th')) if __name__== "__main__": statlist = dir() misslist = [ "Configuration", "Database", "Charset", "codecs", "encoder" , "do_stat", "do_tip", "GInitiallyUnowned", "gtk", "pygtk" - , "re", "re_Percent", "re_Places" + , "re", "re_Places" ] statlist = [ x for x in statlist if x not in dir(sys) ] statlist = [ x for x in statlist if x not in dir(codecs) ] From 4a92638941eb105ab80ca3c1a1ecc41f5d18bf14 Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Sun, 22 Aug 2010 13:57:01 +0300 Subject: [PATCH 240/641] Return "hard" NA for missing/incalculable stats It makes very little sense to do a format string for nothing but zeroes in case of unknown values. Simply return a set of 'NA' strings in place of usual stats. This makes the error cases consistent throughout Stats.py --- pyfpdb/Stats.py | 211 ++++++++++++++++++++++++------------------------ 1 file changed, 105 insertions(+), 106 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index 22900da8..cfe82f0a 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -139,10 +139,10 @@ def vpip(stat_dict, player): _('Voluntarily Put In Pot Pre-Flop%') ) except: return (stat, - '%3.1f' % (0), - 'v=%3.1f%%' % (0), - 'vpip=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'v=NA', + 'vpip=NA', + '(0/0)', _('Voluntarily Put In Pot Pre-Flop%') ) @@ -160,10 +160,10 @@ def pfr(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'p=%3.1f%%' % (0), - 'pfr=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'p=NA', + 'pfr=NA', + '(0/0)', _('Pre-Flop Raise %') ) @@ -181,10 +181,10 @@ def wtsd(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'w=%3.1f%%' % (0), - 'wtsd=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'w=NA', + 'wtsd=NA', + '(0/0)', _('% went to showdown') ) @@ -202,10 +202,10 @@ def wmsd(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'w=%3.1f%%' % (0), - 'wmsd=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'w=NA', + 'wmsd=NA', + '(0/0)', _('% won money at showdown') ) @@ -224,10 +224,10 @@ def profit100(stat_dict, player): except: print _("exception calcing p/100: 100 * %d / %d") % (stat_dict[player]['net'], stat_dict[player]['n']) return (stat, - '%.0f' % (0.0), - 'p=%.0f' % (0.0), - 'p/100=%.0f' % (0.0), - '(%d/%d)' % (0, 0), + 'NA', + 'p=NA', + 'p/100=NA', + '(0/0)', _('profit/100hands') ) @@ -246,10 +246,10 @@ def bbper100(stat_dict, player): except: log.info("exception calcing bb/100: "+str(stat_dict[player])) return (stat, - '%.0f' % (0), - 'bb100=%.0f' % (0), - 'bb100=%.0f' % (0), - '(%f)' % (0), + 'NA', + 'bb100=NA', + 'bb100=NA', + '(--)', _('big blinds/100 hands') ) @@ -268,10 +268,10 @@ def BBper100(stat_dict, player): except: log.info(_("exception calcing BB/100: ")+str(stat_dict[player])) return (stat, - '%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - '(%f)' % (0.0), + 'NA', + 'BB100=NA', + 'BB100=NA', + '(--)', _('Big Bets/100 hands') ) @@ -290,13 +290,11 @@ def saw_f(stat_dict, player): ) except: stat = 0.0 - num = 0 - den = 0 return (stat, - '%3.1f' % (stat), - 'sf=%3.1f%%' % (stat), - 'saw_f=%3.1f%%' % (stat), - '(%d/%d)' % (num, den), + 'NA', + 'sf=NA', + 'saw_f=NA', + '(0/0)', _('Flop Seen %') ) @@ -323,6 +321,7 @@ def n(stat_dict, player): _('number hands seen') ) except: + # Number of hands shouldn't ever be "NA"; zeroes are better here return (0, '%d' % (0), 'n=%d' % (0), @@ -345,10 +344,10 @@ def fold_f(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'ff=%3.1f%%' % (0), - 'fold_f=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff=NA', + 'fold_f=NA', + '(0/0)', _('folded flop/4th') ) @@ -440,10 +439,10 @@ def three_B(stat_dict, player): _('% 3/4 Bet preflop/3rd')) except: return (stat, - '%3.1f' % (0), - '3B=%3.1f%%' % (0), - '3B_pf=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + '3B=NA', + '3B_pf=NA', + '(0/0)', _('% 3/4 Bet preflop/3rd')) def WMsF(stat_dict, player): @@ -459,10 +458,10 @@ def WMsF(stat_dict, player): _('% won$/saw flop/4th')) except: return (stat, - '%3.1f' % (0), - 'wf=%3.1f%%' % (0), - 'w_w_f=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'wf=NA', + 'w_w_f=NA', + '(0/0)', _('% won$/saw flop/4th')) def a_freq1(stat_dict, player): @@ -478,10 +477,10 @@ def a_freq1(stat_dict, player): _('Aggression Freq flop/4th')) except: return (stat, - '%3.1f' % (0), - 'a1=%3.1f%%' % (0), - 'a_fq_1=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a1=NA', + 'a_fq_1=NA', + '(0/0)', _('Aggression Freq flop/4th')) def a_freq2(stat_dict, player): @@ -497,10 +496,10 @@ def a_freq2(stat_dict, player): _('Aggression Freq turn/5th')) except: return (stat, - '%3.1f' % (0), - 'a2=%3.1f%%' % (0), - 'a_fq_2=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a2=NA', + 'a_fq_2=NA', + '(0/0)', _('Aggression Freq turn/5th')) def a_freq3(stat_dict, player): @@ -516,10 +515,10 @@ def a_freq3(stat_dict, player): _('Aggression Freq river/6th')) except: return (stat, - '%3.1f' % (0), - 'a3=%3.1f%%' % (0), - 'a_fq_3=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a3=NA', + 'a_fq_3=NA', + '(0/0)', _('Aggression Freq river/6th')) def a_freq4(stat_dict, player): @@ -535,10 +534,10 @@ def a_freq4(stat_dict, player): _('Aggression Freq 7th')) except: return (stat, - '%3.1f' % (0), - 'a4=%3.1f%%' % (0), - 'a_fq_4=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a4=NA', + 'a_fq_4=NA', + '(0/0)', _('Aggression Freq 7th')) def a_freq_123(stat_dict, player): @@ -561,10 +560,10 @@ def a_freq_123(stat_dict, player): _('Post-Flop Aggression Freq')) except: return (stat, - '%2.0f' % (0), - 'a3=%2.0f%%' % (0), - 'a_fq_3=%2.0f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a3=NA', + 'a_fq_3=NA', + '(0/0)', _('Post-Flop Aggression Freq')) def agg_freq(stat_dict, player): @@ -589,10 +588,10 @@ def agg_freq(stat_dict, player): _('Aggression Freq')) except: return (stat, - '%2.1f' % (0), - 'af=%3.1f%%' % (0), - 'agg_f=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'af=NA', + 'agg_f=NA', + '(0/0)', _('Aggression Freq')) def agg_fact(stat_dict, player): @@ -615,10 +614,10 @@ def agg_fact(stat_dict, player): _('Aggression Factor')) except: return (stat, - '%2.2f' % (0) , - 'afa=%2.2f' % (0) , - 'agg_fa=%2.2f' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'afa=NA', + 'agg_fa=NA', + '(0/0)', _('Aggression Factor')) def cbet(stat_dict, player): @@ -639,10 +638,10 @@ def cbet(stat_dict, player): _('% continuation bet ')) except: return (stat, - '%3.1f' % (0), - 'cbet=%3.1f%%' % (0), - 'cbet=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cbet=NA', + 'cbet=NA', + '(0/0)', _('% continuation bet ')) def cb1(stat_dict, player): @@ -658,10 +657,10 @@ def cb1(stat_dict, player): _('% continuation bet flop/4th')) except: return (stat, - '%3.1f' % (0), - 'cb1=%3.1f%%' % (0), - 'cb_1=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb1=NA', + 'cb_1=NA', + '(0/0)', _('% continuation bet flop/4th')) def cb2(stat_dict, player): @@ -677,10 +676,10 @@ def cb2(stat_dict, player): _('% continuation bet turn/5th')) except: return (stat, - '%3.1f' % (0), - 'cb2=%3.1f%%' % (0), - 'cb_2=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb2=NA', + 'cb_2=NA', + '(0/0)', _('% continuation bet turn/5th')) def cb3(stat_dict, player): @@ -696,10 +695,10 @@ def cb3(stat_dict, player): _('% continuation bet river/6th')) except: return (stat, - '%3.1f' % (0), - 'cb3=%3.1f%%' % (0), - 'cb_3=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb3=NA', + 'cb_3=NA', + '(0/0)', _('% continuation bet river/6th')) def cb4(stat_dict, player): @@ -715,10 +714,10 @@ def cb4(stat_dict, player): _('% continuation bet 7th')) except: return (stat, - '%3.1f' % (0), - 'cb4=%3.1f%%' % (0), - 'cb_4=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb4=NA', + 'cb_4=NA', + '(0/0)', _('% continuation bet 7th')) def ffreq1(stat_dict, player): @@ -753,10 +752,10 @@ def ffreq2(stat_dict, player): _('% fold frequency turn/5th')) except: return (stat, - '%3.1f' % (0), - 'ff2=%3.1f%%' % (0), - 'ff_2=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff2=NA', + 'ff_2=NA', + '(0/0)', _('% fold frequency turn/5th')) def ffreq3(stat_dict, player): @@ -772,10 +771,10 @@ def ffreq3(stat_dict, player): _('% fold frequency river/6th')) except: return (stat, - '%3.1f' % (0), - 'ff3=%3.1f%%' % (0), - 'ff_3=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff3=NA', + 'ff_3=NA', + '(0/0)', _('% fold frequency river/6th')) def ffreq4(stat_dict, player): @@ -791,10 +790,10 @@ def ffreq4(stat_dict, player): _('% fold frequency 7th')) except: return (stat, - '%3.1f' % (0), - 'ff4=%3.1f%%' % (0), - 'ff_4=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff4=NA', + 'ff_4=NA', + '(0/0)', _('% fold frequency 7th')) if __name__== "__main__": From d2483b88665b1ea4ff5fcb49143b5ab31cd5d4eb Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Sun, 22 Aug 2010 14:12:29 +0300 Subject: [PATCH 241/641] Add comment on decimal place override --- pyfpdb/Stats.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index cfe82f0a..285a45ea 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -93,6 +93,11 @@ def do_stat(stat_dict, player = 24, stat = 'vpip'): result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) # If decimal places have been defined, override result[1] + # NOTE: decimal place override ALWAYS assumes the raw result is a + # fraction (x/100); manual decimal places really only make sense for + # percentage values. Also, profit/100 hands (bb/BB) already default + # to three decimal places anyhow, so they are unlikely override + # candidates. if match: base = stat[0:-2] places = int(stat[-1:]) From 08eaed1e5d1eb7fbff115ce9395f11986939ad1f Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sun, 22 Aug 2010 12:35:51 +0100 Subject: [PATCH 242/641] refine layout and create an 'add' button (no code behind the button yet) --- pyfpdb/GuiDatabase.py | 62 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 7 deletions(-) diff --git a/pyfpdb/GuiDatabase.py b/pyfpdb/GuiDatabase.py index 0f7cdab1..ceea6dfd 100755 --- a/pyfpdb/GuiDatabase.py +++ b/pyfpdb/GuiDatabase.py @@ -79,8 +79,17 @@ class GuiDatabase: try: #self.dia.set_modal(True) self.vbox = self.dia.vbox + self.action_area = self.dia.action_area #gtk.Widget.set_size_request(self.vbox, 700, 400); + h = gtk.HBox(False, spacing=3) + h.show() + self.vbox.pack_start(h, padding=3) + + vbtn = gtk.VBox(True, spacing=3) + vbtn.show() + h.pack_start(vbtn, expand=False, fill=False, padding=2) + # list of databases in self.config.supported_databases: self.liststore = gtk.ListStore(str, str, str, str, str ,str, str, str, str, str) @@ -101,12 +110,28 @@ class GuiDatabase: self.scrolledwindow = gtk.ScrolledWindow() self.scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.scrolledwindow.add(self.listview) - self.vbox.pack_start(self.scrolledwindow, expand=True, fill=True, padding=0) + h.pack_start(self.scrolledwindow, expand=True, fill=True, padding=0) - refreshbutton = gtk.Button(_("Refresh")) - refreshbutton.connect("clicked", self.refresh, None) - self.vbox.pack_start(refreshbutton, False, False, 3) - refreshbutton.show() + # to change label on buttons: + # ( see http://faq.pygtk.org/index.py?req=show&file=faq09.005.htp ) + gtk.stock_add([(gtk.STOCK_ADD, _("Add"), 0, 0, "")]) + + # alternatively: + # button = gtk.Button(stock=gtk.STOCK_CANCEL) + # button.show() + # alignment = button.get_children()[0] + # hbox = alignment.get_children()[0] + # image, label = hbox.get_children() + # label.set_text('Hide') + + + add_button = self.makeSideButton(_("Add"), gtk.STOCK_ADD) + add_button.connect("clicked", self.addDB, None) + vbtn.pack_start(add_button, False, False, 3) + + refresh_button = self.makeSideButton(_("Refresh"), gtk.STOCK_REFRESH) + refresh_button.connect("clicked", self.refresh, None) + vbtn.pack_start(refresh_button, False, False, 3) col = self.addTextColumn(_("Type"), 0, False) col = self.addTextColumn(_("Name"), 1, False) @@ -122,6 +147,7 @@ class GuiDatabase: self.listview.add_events(gtk.gdk.BUTTON_PRESS_MASK) self.listview.connect('button_press_event', self.selectTest) + self.dia.show_all() self.loadDbs() #self.dia.connect('response', self.dialog_response_cb) @@ -129,6 +155,25 @@ class GuiDatabase: err = traceback.extract_tb(sys.exc_info()[2])[-1] print 'guidbmaint: '+ err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) + def makeSideButton(self, label, stock): + gtk.stock_add([(gtk.STOCK_REFRESH, _("Refresh"), 0, 0, "")]) + + button = gtk.Button(stock=stock) + alignment = button.get_children()[0] + hbox = alignment.get_children()[0] + image, label = hbox.get_children() + #label.set_text('Hide') + hbox.remove(image) + hbox.remove(label) + v = gtk.VBox(False, spacing=3) + v.pack_start(image, 3) + v.pack_start(label, 3) + alignment.remove(hbox) + alignment.add(v) + button.show_all() + + return(button) + def dialog_response_cb(self, dialog, response_id): # this is called whether close button is pressed or window is closed log.info('dialog_response_cb: response_id='+str(response_id)) @@ -250,7 +295,7 @@ class GuiDatabase: #self.listcols = [] dia = self.info_box2(None, _('Testing database connections ... '), "", False, False) while gtk.events_pending(): - gtk.mainiteration() + gtk.main_iteration() try: # want to fill: dbms, name, comment, user, passwd, host, default, status, icon @@ -356,6 +401,9 @@ class GuiDatabase: def refresh(self, widget, data): self.loadDbs() + def addDB(self, widget, data): + pass + def info_box(self, dia, str1, str2, run, destroy): if dia is None: #if run: @@ -394,7 +442,7 @@ class GuiDatabase: # messagedialog puts text in inverse colors if no buttons are displayed?? #dia = gtk.MessageDialog( parent=self.main_window, flags=gtk.DIALOG_DESTROY_WITH_PARENT # , type=gtk.MESSAGE_INFO, buttons=(btns), message_format=str1 ) - dia = gtk.Dialog( parent=self.main_window, flags=gtk.DIALOG_DESTROY_WITH_PARENT + dia = gtk.Dialog( parent=self.dia, flags=gtk.DIALOG_DESTROY_WITH_PARENT , title="" ) # , buttons=btns vbox = dia.vbox From b41e385979863a687f3eaff6acec303207ec64d2 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 23 Aug 2010 02:16:44 +0200 Subject: [PATCH 243/641] improve error reporting in Hand.checkPlayerExists --- pyfpdb/Hand.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index c32f9f37..aa048ae4 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -320,10 +320,8 @@ If a player has None chips he won't be added.""" def checkPlayerExists(self,player): if player not in [p[1] for p in self.players]: - print _("DEBUG: checkPlayerExists %s fail") % player - raise FpdbParseError(_("checkPlayerExists: '%s' failed.") % player) - - + print (_("DEBUG: checkPlayerExists %s fail on hand number %s") % (player, self.handid)) + raise FpdbParseError(_("checkPlayerExists: '%s fail on hand number %s") % (player, self.handid)) def setCommunityCards(self, street, cards): log.debug("setCommunityCards %s %s" %(street, cards)) From 0cc5865ba1e9f22565115460e0e5cd4a8b4e918f Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 23 Aug 2010 03:56:07 +0200 Subject: [PATCH 244/641] config: expand general section as discussed on ML, add defaults for it --- pyfpdb/Configuration.py | 16 ++++++++++++++++ pyfpdb/HUD_config.xml.example | 7 +++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index b5afcf5a..980fc8e5 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -519,6 +519,20 @@ class General(dict): for (name, value) in node.attributes.items(): log.debug(_("config.general: adding %s = %s") % (name,value)) self[name] = value + + try: + self["version"]=int(self["version"]) + except KeyError: + self["version"]=0 + self["ui_language"]="system" + self["config_difficuly"]="expert" + + def get_defaults(self): + self["version"]=0 + self["ui_language"]="system" + self["config_difficuly"]="expert" + self["config_wrap_len"]="-1" + self["day_start"]="5" def __str__(self): s = "" @@ -703,6 +717,8 @@ class Config: self.emails = {} self.gui_cash_stats = GUICashStats() + if doc.getElementsByTagName("general") == []: + self.general.get_defaults() for gen_node in doc.getElementsByTagName("general"): self.general.add_elements(node=gen_node) # add/overwrite elements in self.general diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index c2a47419..977b6060 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -5,8 +5,11 @@ - From 994fea2e224ff0d05ef7d55e23413eab4e75d614 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 23 Aug 2010 05:21:07 +0200 Subject: [PATCH 245/641] move localisation scripts into locale folder --- pyfpdb/{ => locale}/create-mo-files.sh | 2 ++ pyfpdb/{ => locale}/create-po-file.sh | 1 + 2 files changed, 3 insertions(+) rename pyfpdb/{ => locale}/create-mo-files.sh (94%) rename pyfpdb/{ => locale}/create-po-file.sh (95%) diff --git a/pyfpdb/create-mo-files.sh b/pyfpdb/locale/create-mo-files.sh similarity index 94% rename from pyfpdb/create-mo-files.sh rename to pyfpdb/locale/create-mo-files.sh index 2e76648b..4b9d1dc9 100755 --- a/pyfpdb/create-mo-files.sh +++ b/pyfpdb/locale/create-mo-files.sh @@ -1 +1,3 @@ +cd .. python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po + diff --git a/pyfpdb/create-po-file.sh b/pyfpdb/locale/create-po-file.sh similarity index 95% rename from pyfpdb/create-po-file.sh rename to pyfpdb/locale/create-po-file.sh index c2cdfefe..d26c853a 100755 --- a/pyfpdb/create-po-file.sh +++ b/pyfpdb/locale/create-po-file.sh @@ -1,2 +1,3 @@ +cd .. python /usr/share/doc/python-2.7/examples/Tools/i18n/pygettext.py --output-dir=locale --default-domain=fpdb --output=fpdb-en_GB.po *.py* From 4170e33b35cd741e1cfdf3335b8f123d81010d3d Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 23 Aug 2010 05:28:45 +0200 Subject: [PATCH 246/641] update PO file --- pyfpdb/locale/fpdb-en_GB.po | 611 ++++++++++++++++++++---------------- 1 file changed, 334 insertions(+), 277 deletions(-) diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index 3a0103e8..b5023daf 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -5,12 +5,12 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-17 20:08+CEST\n" +"POT-Creation-Date: 2010-08-23 05:27+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" "Generated-By: pygettext.py 1.5\n" @@ -23,31 +23,31 @@ msgstr "" msgid "Output being written to" msgstr "" -#: BetfairToFpdb.py:83 +#: BetfairToFpdb.py:84 msgid "GameInfo regex did not match" msgstr "" -#: BetfairToFpdb.py:114 +#: BetfairToFpdb.py:115 msgid "Didn't match re_HandInfo" msgstr "" -#: BetfairToFpdb.py:170 +#: BetfairToFpdb.py:171 msgid "No bringin found" msgstr "" -#: BetfairToFpdb.py:206 PokerStarsToFpdb.py:440 +#: BetfairToFpdb.py:207 OnGameToFpdb.py:328 PokerStarsToFpdb.py:440 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "" -#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 msgid "parse input hand history" msgstr "" -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 msgid "output translation to" msgstr "" -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 +#: BetfairToFpdb.py:232 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 msgid "follow (tail -f) the input" msgstr "" @@ -65,71 +65,95 @@ msgid "" "Could not encode: \"%s\"\n" msgstr "" -#: Configuration.py:110 +#: Configuration.py:113 Configuration.py:126 +msgid "" +"Config file has been created at %s.\n" +msgstr "" + +#: Configuration.py:125 msgid "" "No %s found\n" " in %s\n" " or %s\n" msgstr "" -#: Configuration.py:111 -msgid "" -"Config file has been created at %s.\n" -msgstr "" - -#: Configuration.py:116 Configuration.py:117 +#: Configuration.py:131 Configuration.py:132 msgid "" "Error copying .example file, cannot fall back. Exiting.\n" msgstr "" -#: Configuration.py:121 Configuration.py:122 +#: Configuration.py:136 Configuration.py:137 msgid "" "No %s found, cannot fall back. Exiting.\n" msgstr "" -#: Configuration.py:152 +#: Configuration.py:167 msgid "Default logger initialised for " msgstr "" -#: Configuration.py:153 +#: Configuration.py:168 msgid "Default logger intialised for " msgstr "" -#: Configuration.py:164 Database.py:431 Database.py:432 +#: Configuration.py:179 Database.py:438 Database.py:439 msgid "Creating directory: '%s'" msgstr "" -#: Configuration.py:190 +#: Configuration.py:205 msgid "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're not on a Mac, please report this problem." msgstr "" -#: Configuration.py:273 +#: Configuration.py:303 msgid "Loading site" msgstr "" -#: Configuration.py:511 +#: Configuration.py:520 msgid "config.general: adding %s = %s" msgstr "" -#: Configuration.py:544 Configuration.py:545 +#: Configuration.py:567 Configuration.py:568 msgid "bad number in xalignment was ignored" msgstr "" -#: Configuration.py:598 Configuration.py:599 +#: Configuration.py:616 +msgid "missing config section raw_hands" +msgstr "" + +#: Configuration.py:622 +msgid "Invalid config value for raw_hands.save, defaulting to \"error\"" +msgstr "" + +#: Configuration.py:629 +msgid "Invalid config value for raw_hands.compression, defaulting to \"none\"" +msgstr "" + +#: Configuration.py:642 +msgid "missing config section raw_tourneys" +msgstr "" + +#: Configuration.py:648 +msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" +msgstr "" + +#: Configuration.py:655 +msgid "Invalid config value for raw_tourneys.compression, defaulting to \"none\"" +msgstr "" + +#: Configuration.py:673 Configuration.py:674 msgid "Configuration file %s not found. Using defaults." msgstr "" -#: Configuration.py:615 +#: Configuration.py:690 msgid "Reading configuration file %s" msgstr "" -#: Configuration.py:616 +#: Configuration.py:691 msgid "" "\n" "Reading configuration file %s\n" msgstr "" -#: Configuration.py:621 +#: Configuration.py:696 msgid "Error parsing %s. See error log file." msgstr "" @@ -141,295 +165,291 @@ msgstr "" msgid "Not using numpy to define variance in sqlite." msgstr "" -#: Database.py:246 +#: Database.py:250 msgid "Creating Database instance, sql = %s" msgstr "" -#: Database.py:382 +#: Database.py:389 msgid "*** WARNING UNKNOWN MYSQL ERROR:" msgstr "" -#: Database.py:436 +#: Database.py:443 msgid "Connecting to SQLite: %(database)s" msgstr "" -#: Database.py:448 +#: Database.py:455 msgid "Some database functions will not work without NumPy support" msgstr "" -#: Database.py:469 +#: Database.py:476 msgid "outdated or too new database version (%s) - please recreate tables" msgstr "" -#: Database.py:475 Database.py:476 +#: Database.py:482 Database.py:483 msgid "Failed to read settings table - recreating tables" msgstr "" -#: Database.py:480 Database.py:481 +#: Database.py:487 Database.py:488 msgid "Failed to read settings table - please recreate tables" msgstr "" -#: Database.py:499 -msgid "commit finished ok, i = " -msgstr "" - -#: Database.py:502 +#: Database.py:509 msgid "commit %s failed: info=%s value=%s" msgstr "" -#: Database.py:506 +#: Database.py:513 msgid "commit failed" msgstr "" -#: Database.py:675 Database.py:704 +#: Database.py:682 Database.py:711 msgid "*** Database Error: " msgstr "" -#: Database.py:701 +#: Database.py:708 msgid "Database: date n hands ago = " msgstr "" -#: Database.py:858 +#: Database.py:865 msgid "ERROR: query %s result does not have player_id as first column" msgstr "" -#: Database.py:900 +#: Database.py:907 msgid "getLastInsertId(): problem fetching insert_id? ret=%d" msgstr "" -#: Database.py:912 +#: Database.py:919 msgid "getLastInsertId(%s): problem fetching lastval? row=%d" msgstr "" -#: Database.py:919 +#: Database.py:926 msgid "getLastInsertId(): unknown backend: %d" msgstr "" -#: Database.py:924 +#: Database.py:931 msgid "*** Database get_last_insert_id error: " msgstr "" -#: Database.py:978 Database.py:1398 +#: Database.py:985 Database.py:1407 msgid "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." msgstr "" -#: Database.py:982 Database.py:1402 +#: Database.py:989 Database.py:1411 msgid "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." msgstr "" -#: Database.py:990 Database.py:1276 +#: Database.py:997 Database.py:1285 msgid "dropping mysql index " msgstr "" -#: Database.py:996 Database.py:1281 Database.py:1289 Database.py:1296 +#: Database.py:1003 Database.py:1290 Database.py:1298 Database.py:1305 msgid " drop index failed: " msgstr "" -#: Database.py:1001 Database.py:1283 +#: Database.py:1008 Database.py:1292 msgid "dropping pg index " msgstr "" -#: Database.py:1014 +#: Database.py:1021 msgid "warning: drop index %s_%s_idx failed: %s, continuing ..." msgstr "" -#: Database.py:1018 +#: Database.py:1025 msgid "warning: index %s_%s_idx not dropped %s, continuing ..." msgstr "" -#: Database.py:1058 Database.py:1066 Database.py:1329 Database.py:1337 +#: Database.py:1065 Database.py:1073 Database.py:1338 Database.py:1346 msgid "creating foreign key " msgstr "" -#: Database.py:1064 Database.py:1085 Database.py:1335 +#: Database.py:1071 Database.py:1092 Database.py:1344 msgid " create foreign key failed: " msgstr "" -#: Database.py:1073 Database.py:1344 +#: Database.py:1080 Database.py:1353 msgid " create foreign key failed: " msgstr "" -#: Database.py:1080 +#: Database.py:1087 msgid "creating mysql index " msgstr "" -#: Database.py:1089 +#: Database.py:1096 msgid "creating pg index " msgstr "" -#: Database.py:1094 +#: Database.py:1101 msgid " create index failed: " msgstr "" -#: Database.py:1134 Database.py:1135 +#: Database.py:1141 Database.py:1142 msgid "Finished recreating tables" msgstr "" -#: Database.py:1172 +#: Database.py:1181 msgid "***Error creating tables: " msgstr "" -#: Database.py:1182 +#: Database.py:1191 msgid "*** Error unable to get databasecursor" msgstr "" -#: Database.py:1194 Database.py:1205 Database.py:1215 Database.py:1222 +#: Database.py:1203 Database.py:1214 Database.py:1224 Database.py:1231 msgid "***Error dropping tables: " msgstr "" -#: Database.py:1220 +#: Database.py:1229 msgid "*** Error in committing table drop" msgstr "" -#: Database.py:1234 Database.py:1235 +#: Database.py:1243 Database.py:1244 msgid "Creating mysql index %s %s" msgstr "" -#: Database.py:1240 Database.py:1249 +#: Database.py:1249 Database.py:1258 msgid " create index failed: " msgstr "" -#: Database.py:1243 Database.py:1244 +#: Database.py:1252 Database.py:1253 msgid "Creating pgsql index %s %s" msgstr "" -#: Database.py:1251 Database.py:1252 +#: Database.py:1260 Database.py:1261 msgid "Creating sqlite index %s %s" msgstr "" -#: Database.py:1257 +#: Database.py:1266 msgid "Create index failed: " msgstr "" -#: Database.py:1259 +#: Database.py:1268 msgid "Unknown database: MySQL, Postgres and SQLite supported" msgstr "" -#: Database.py:1264 +#: Database.py:1273 msgid "Error creating indexes: " msgstr "" -#: Database.py:1291 +#: Database.py:1300 msgid "Dropping sqlite index " msgstr "" -#: Database.py:1298 +#: Database.py:1307 msgid "Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" msgstr "" -#: Database.py:1312 Database.py:1352 +#: Database.py:1321 Database.py:1361 msgid " set_isolation_level failed: " msgstr "" -#: Database.py:1346 Database.py:1405 +#: Database.py:1355 Database.py:1414 msgid "Only MySQL and Postgres supported so far" msgstr "" -#: Database.py:1376 +#: Database.py:1385 msgid "dropping mysql foreign key" msgstr "" -#: Database.py:1380 +#: Database.py:1389 msgid " drop failed: " msgstr "" -#: Database.py:1383 +#: Database.py:1392 msgid "dropping pg foreign key" msgstr "" -#: Database.py:1395 +#: Database.py:1404 msgid "dropped pg foreign key %s_%s_fkey, continuing ..." msgstr "" -#: Database.py:1496 +#: Database.py:1505 msgid "Rebuild hudcache took %.1f seconds" msgstr "" -#: Database.py:1499 Database.py:1532 +#: Database.py:1508 Database.py:1541 msgid "Error rebuilding hudcache:" msgstr "" -#: Database.py:1544 Database.py:1550 +#: Database.py:1553 Database.py:1559 msgid "Error during analyze:" msgstr "" -#: Database.py:1554 +#: Database.py:1563 msgid "Analyze took %.1f seconds" msgstr "" -#: Database.py:1564 Database.py:1570 +#: Database.py:1573 Database.py:1579 msgid "Error during vacuum:" msgstr "" -#: Database.py:1574 +#: Database.py:1583 msgid "Vacuum took %.1f seconds" msgstr "" -#: Database.py:1586 +#: Database.py:1595 msgid "Error during lock_for_insert:" msgstr "" -#: Database.py:1959 +#: Database.py:1992 msgid "queue empty too long - writer stopping ..." msgstr "" -#: Database.py:1962 +#: Database.py:1995 msgid "writer stopping, error reading queue: " msgstr "" -#: Database.py:1987 +#: Database.py:2020 msgid "deadlock detected - trying again ..." msgstr "" -#: Database.py:1992 +#: Database.py:2025 msgid "too many deadlocks - failed to store hand " msgstr "" -#: Database.py:1996 +#: Database.py:2029 msgid "***Error storing hand: " msgstr "" -#: Database.py:2006 +#: Database.py:2039 msgid "db writer finished: stored %d hands (%d fails) in %.1f seconds" msgstr "" -#: Database.py:2016 +#: Database.py:2049 msgid "***Error sending finish: " msgstr "" -#: Database.py:2096 +#: Database.py:2131 msgid "invalid source in Database.createOrUpdateTourney" msgstr "" -#: Database.py:2109 +#: Database.py:2144 msgid "invalid source in Database.createOrUpdateTourneysPlayers" msgstr "" -#: Database.py:2235 +#: Database.py:2270 msgid "HandToWrite.init error: " msgstr "" -#: Database.py:2285 +#: Database.py:2320 msgid "HandToWrite.set_all error: " msgstr "" -#: Database.py:2316 +#: Database.py:2351 msgid "nutOmatic is id_player = %d" msgstr "" -#: Database.py:2324 +#: Database.py:2359 msgid "query plan: " msgstr "" -#: Database.py:2333 +#: Database.py:2368 msgid "cards =" msgstr "" -#: Database.py:2336 +#: Database.py:2371 msgid "get_stats took: %4.3f seconds" msgstr "" -#: Database.py:2338 Tables.py:448 +#: Database.py:2373 Tables.py:448 msgid "press enter to continue" msgstr "" @@ -689,7 +709,7 @@ msgstr "" msgid "auto" msgstr "" -#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:397 +#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:399 msgid "don't drop" msgstr "" @@ -709,8 +729,8 @@ msgstr "" msgid "Drop HudCache:" msgstr "" -#: GuiBulkImport.py:297 -msgid "Import" +#: GuiBulkImport.py:297 fpdb.pyw:832 +msgid "_Bulk Import" msgstr "" #: GuiBulkImport.py:299 @@ -745,35 +765,39 @@ msgstr "" msgid "Do the required conversion for Stars Archive format (ie. as provided by support" msgstr "" -#: GuiBulkImport.py:363 -msgid "USAGE:" -msgstr "" - -#: GuiBulkImport.py:364 -msgid "PokerStars converter: ./GuiBulkImport.py -c PokerStars -f filename" +#: GuiBulkImport.py:360 +msgid "Output the pprinted version of the HandsPlayer hash for regresion testing" msgstr "" #: GuiBulkImport.py:365 -msgid "Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" +msgid "USAGE:" msgstr "" #: GuiBulkImport.py:366 -msgid "Everleaf converter: ./GuiBulkImport.py -c Everleaf -f filename" +msgid "PokerStars converter: ./GuiBulkImport.py -c PokerStars -f filename" msgstr "" #: GuiBulkImport.py:367 -msgid "Absolute converter: ./GuiBulkImport.py -c Absolute -f filename" +msgid "Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" msgstr "" #: GuiBulkImport.py:368 +msgid "Everleaf converter: ./GuiBulkImport.py -c Everleaf -f filename" +msgstr "" + +#: GuiBulkImport.py:369 +msgid "Absolute converter: ./GuiBulkImport.py -c Absolute -f filename" +msgstr "" + +#: GuiBulkImport.py:370 msgid "PartyPoker converter: ./GuiBulkImport.py -c PartyPoker -f filename" msgstr "" -#: GuiBulkImport.py:384 +#: GuiBulkImport.py:386 msgid "-q is deprecated. Just use \"-f filename\" instead" msgstr "" -#: GuiBulkImport.py:406 +#: GuiBulkImport.py:410 msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" msgstr "" @@ -793,11 +817,11 @@ msgstr "" msgid "Description" msgstr "" -#: GuiDatabase.py:114 GuiImapFetcher.py:123 +#: GuiDatabase.py:114 GuiImapFetcher.py:119 msgid "Username" msgstr "" -#: GuiDatabase.py:115 GuiImapFetcher.py:123 +#: GuiDatabase.py:115 GuiImapFetcher.py:119 msgid "Password" msgstr "" @@ -829,7 +853,7 @@ msgstr "" msgid " not connected but no exception" msgstr "" -#: GuiDatabase.py:293 fpdb.pyw:906 +#: GuiDatabase.py:293 fpdb.pyw:905 msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -837,7 +861,7 @@ msgstr "" msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started" msgstr "" -#: GuiDatabase.py:301 fpdb.pyw:911 +#: GuiDatabase.py:301 fpdb.pyw:910 msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -958,47 +982,47 @@ msgstr "" msgid "If you change the config you must save before importing" msgstr "" -#: GuiImapFetcher.py:103 +#: GuiImapFetcher.py:98 msgid "Starting import. Please wait." msgstr "" -#: GuiImapFetcher.py:107 +#: GuiImapFetcher.py:103 msgid "Finished import without error." msgstr "" -#: GuiImapFetcher.py:110 +#: GuiImapFetcher.py:106 msgid "Login to mailserver failed: please check mailserver, username and password" msgstr "" -#: GuiImapFetcher.py:113 +#: GuiImapFetcher.py:109 msgid "Could not connect to mailserver: check mailserver and use SSL settings and internet connectivity" msgstr "" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Fetch Type" msgstr "" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Mail Folder" msgstr "" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Mailserver" msgstr "" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Site" msgstr "" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Use SSL" msgstr "" -#: GuiImapFetcher.py:154 +#: GuiImapFetcher.py:151 msgid "Yes" msgstr "" -#: GuiImapFetcher.py:155 +#: GuiImapFetcher.py:152 msgid "No" msgstr "" @@ -1117,7 +1141,7 @@ msgid "" "HUD_main: starting ..." msgstr "" -#: HUD_main.pyw:89 fpdb.pyw:876 +#: HUD_main.pyw:89 msgid "Logfile is " msgstr "" @@ -1130,7 +1154,7 @@ msgid "" "Note: error output is being diverted to:\n" msgstr "" -#: HUD_main.pyw:96 fpdb.pyw:1138 +#: HUD_main.pyw:96 fpdb.pyw:1139 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1406,7 +1430,7 @@ msgstr "" msgid "TOURNEYS PLAYER IDS" msgstr "" -#: Hand.py:225 Hand.py:1244 +#: Hand.py:225 Hand.py:1242 msgid "[ERROR] Tried to add holecards for unknown player: %s" msgstr "" @@ -1423,206 +1447,226 @@ msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" msgstr "" #: Hand.py:323 -msgid "DEBUG: checkPlayerExists %s fail" +msgid "DEBUG: checkPlayerExists %s fail on hand number %s" msgstr "" #: Hand.py:324 -msgid "checkPlayerExists: '%s' failed." +msgid "checkPlayerExists: '%s fail on hand number %s" msgstr "" -#: Hand.py:407 +#: Hand.py:405 msgid "%s %s calls %s" msgstr "" -#: Hand.py:477 +#: Hand.py:475 msgid "%s %s raise %s" msgstr "" -#: Hand.py:488 +#: Hand.py:486 msgid "%s %s bets %s" msgstr "" -#: Hand.py:507 +#: Hand.py:505 msgid "%s %s folds" msgstr "" -#: Hand.py:516 +#: Hand.py:514 msgid "%s %s checks" msgstr "" -#: Hand.py:536 +#: Hand.py:534 msgid "addShownCards %s hole=%s all=%s" msgstr "" -#: Hand.py:647 +#: Hand.py:645 msgid "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, expecting datetime.date object, received:" msgstr "" -#: Hand.py:648 +#: Hand.py:646 msgid "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" -#: Hand.py:649 +#: Hand.py:647 msgid "*** Game String:" msgstr "" -#: Hand.py:703 +#: Hand.py:701 msgid "*** Parse error reading blinds (check compilePlayerRegexs as a likely culprit)" msgstr "" -#: Hand.py:730 +#: Hand.py:728 msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" msgstr "" -#: Hand.py:732 +#: Hand.py:730 msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" msgstr "" -#: Hand.py:1113 +#: Hand.py:1111 msgid "*** DEALING HANDS ***" msgstr "" -#: Hand.py:1118 +#: Hand.py:1116 msgid "Dealt to %s: [%s]" msgstr "" -#: Hand.py:1123 +#: Hand.py:1121 msgid "*** FIRST DRAW ***" msgstr "" -#: Hand.py:1133 +#: Hand.py:1131 msgid "*** SECOND DRAW ***" msgstr "" -#: Hand.py:1143 +#: Hand.py:1141 msgid "*** THIRD DRAW ***" msgstr "" -#: Hand.py:1153 Hand.py:1371 +#: Hand.py:1151 Hand.py:1369 msgid "*** SHOW DOWN ***" msgstr "" -#: Hand.py:1168 Hand.py:1386 +#: Hand.py:1166 Hand.py:1384 msgid "*** SUMMARY ***" msgstr "" -#: Hand.py:1253 +#: Hand.py:1251 msgid "%s %s completes %s" msgstr "" -#: Hand.py:1271 +#: Hand.py:1269 msgid "Bringin: %s, %s" msgstr "" -#: Hand.py:1311 +#: Hand.py:1309 msgid "*** 3RD STREET ***" msgstr "" -#: Hand.py:1325 +#: Hand.py:1323 msgid "*** 4TH STREET ***" msgstr "" -#: Hand.py:1337 +#: Hand.py:1335 msgid "*** 5TH STREET ***" msgstr "" -#: Hand.py:1349 +#: Hand.py:1347 msgid "*** 6TH STREET ***" msgstr "" -#: Hand.py:1359 +#: Hand.py:1357 msgid "*** RIVER ***" msgstr "" -#: Hand.py:1451 +#: Hand.py:1449 msgid "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should be impossible for anyone who is not a hero" msgstr "" -#: Hand.py:1452 +#: Hand.py:1450 msgid "join_holcards: holecards(%s): %s" msgstr "" -#: Hand.py:1535 +#: Hand.py:1533 msgid "DEBUG: call Pot.end() before printing pot total" msgstr "" -#: Hand.py:1537 +#: Hand.py:1535 msgid "FpdbError in printing Hand object" msgstr "" -#: HandHistoryConverter.py:134 +#: HandHistoryConverter.py:135 msgid "Failed sanity check" msgstr "" -#: HandHistoryConverter.py:142 +#: HandHistoryConverter.py:143 msgid "Tailing '%s'" msgstr "" -#: HandHistoryConverter.py:149 +#: HandHistoryConverter.py:150 msgid "HHC.start(follow): processHand failed: Exception msg: '%s'" msgstr "" -#: HandHistoryConverter.py:163 +#: HandHistoryConverter.py:154 +msgid "handsList is " +msgstr "" + +#: HandHistoryConverter.py:165 msgid "HHC.start(): processHand failed: Exception msg: '%s'" msgstr "" -#: HandHistoryConverter.py:167 +#: HandHistoryConverter.py:169 msgid "Read %d hands (%d failed) in %.3f seconds" msgstr "" -#: HandHistoryConverter.py:173 +#: HandHistoryConverter.py:175 msgid "Summary file '%s' correctly parsed (took %.3f seconds)" msgstr "" -#: HandHistoryConverter.py:175 +#: HandHistoryConverter.py:177 msgid "Error converting summary file '%s' (took %.3f seconds)" msgstr "" -#: HandHistoryConverter.py:178 +#: HandHistoryConverter.py:180 msgid "Error converting '%s'" msgstr "" -#: HandHistoryConverter.py:209 +#: HandHistoryConverter.py:211 msgid "%s changed inode numbers from %d to %d" msgstr "" -#: HandHistoryConverter.py:254 +#: HandHistoryConverter.py:256 msgid "Converting starsArchive format to readable" msgstr "" -#: HandHistoryConverter.py:259 +#: HandHistoryConverter.py:261 msgid "Converting ftpArchive format to readable" msgstr "" -#: HandHistoryConverter.py:264 +#: HandHistoryConverter.py:266 msgid "Read no hands." msgstr "" -#: HandHistoryConverter.py:401 +#: HandHistoryConverter.py:474 msgid "HH Sanity Check: output and input files are the same, check config" msgstr "" -#: HandHistoryConverter.py:436 +#: HandHistoryConverter.py:497 msgid "Reading stdin with %s" msgstr "" -#: HandHistoryConverter.py:451 +#: HandHistoryConverter.py:512 msgid "unable to read file with any codec in list!" msgstr "" -#: HandHistoryConverter.py:605 +#: HandHistoryConverter.py:579 +msgid " given TZ:" +msgstr "" + +#: HandHistoryConverter.py:579 +msgid "raw time:" +msgstr "" + +#: HandHistoryConverter.py:589 +msgid "changeTimeZone: offset=" +msgstr "" + +#: HandHistoryConverter.py:652 +msgid "utcTime:" +msgstr "" + +#: HandHistoryConverter.py:685 msgid "Unable to create output directory %s for HHC!" msgstr "" -#: HandHistoryConverter.py:606 +#: HandHistoryConverter.py:686 msgid "*** ERROR: UNABLE TO CREATE OUTPUT DIRECTORY" msgstr "" -#: HandHistoryConverter.py:608 +#: HandHistoryConverter.py:688 msgid "Created directory '%s'" msgstr "" -#: HandHistoryConverter.py:612 +#: HandHistoryConverter.py:692 msgid "out_path %s couldn't be opened" msgstr "" @@ -1733,51 +1777,51 @@ msgstr "" msgid "Set max seats" msgstr "" -#: Hud.py:540 +#: Hud.py:543 msgid "Updating config file" msgstr "" -#: Hud.py:549 +#: Hud.py:552 msgid "" "No layout found for %d-max games for site %s\n" msgstr "" -#: Hud.py:563 +#: Hud.py:566 msgid "" "exception in Hud.adj_seats\n" "\n" msgstr "" -#: Hud.py:564 +#: Hud.py:567 msgid "error is %s" msgstr "" -#: Hud.py:571 +#: Hud.py:574 msgid "" "Error finding actual seat.\n" msgstr "" -#: Hud.py:587 +#: Hud.py:590 msgid "" "------------------------------------------------------------\n" "Creating hud from hand %s\n" msgstr "" -#: Hud.py:636 +#: Hud.py:639 msgid "KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric" msgstr "" -#: Hud.py:637 +#: Hud.py:640 msgid "(btw, the key was %s and statd is %s" msgstr "" -#: Hud.py:944 +#: Hud.py:947 msgid "" "Fake main window, blah blah, blah\n" "blah, blah" msgstr "" -#: Hud.py:952 +#: Hud.py:955 msgid "Table not found." msgstr "" @@ -1785,7 +1829,7 @@ msgstr "" msgid "response to logging in:" msgstr "" -#: ImapFetcher.py:86 +#: ImapFetcher.py:85 msgid "completed running Imap import, closing server connection" msgstr "" @@ -1793,6 +1837,38 @@ msgstr "" msgid "No Name" msgstr "" +#: OnGameToFpdb.py:153 PokerStarsToFpdb.py:189 +msgid "determineGameType: Unable to recognise gametype from: '%s'" +msgstr "" + +#: OnGameToFpdb.py:154 PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 +msgid "determineGameType: Raising FpdbParseError" +msgstr "" + +#: OnGameToFpdb.py:155 PokerStarsToFpdb.py:191 +msgid "Unable to recognise gametype from: '%s'" +msgstr "" + +#: OnGameToFpdb.py:235 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +msgid "readButton: not found" +msgstr "" + +#: OnGameToFpdb.py:250 +msgid "readBlinds starting" +msgstr "" + +#: OnGameToFpdb.py:254 +msgid "re_postSB failed, hand=" +msgstr "" + +#: OnGameToFpdb.py:257 +msgid "readBlinds in noSB exception" +msgstr "" + +#: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 +msgid "reading antes" +msgstr "" + #: Options.py:40 msgid "If passed error output will go to the console rather than ." msgstr "" @@ -1857,10 +1933,6 @@ msgstr "" msgid "Cannot read GameType for current hand" msgstr "" -#: PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 -msgid "readButton: not found" -msgstr "" - #: PartyPokerToFpdb.py:479 msgid "Unimplemented readAction: '%s' '%s'" msgstr "" @@ -1873,18 +1945,6 @@ msgstr "" msgid "in not result starttime" msgstr "" -#: PokerStarsToFpdb.py:189 -msgid "determineGameType: Unable to recognise gametype from: '%s'" -msgstr "" - -#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 -msgid "determineGameType: Raising FpdbParseError" -msgstr "" - -#: PokerStarsToFpdb.py:191 -msgid "Unable to recognise gametype from: '%s'" -msgstr "" - #: PokerStarsToFpdb.py:221 msgid "Lim_Blinds has no lookup for '%s'" msgstr "" @@ -1893,10 +1953,6 @@ msgstr "" msgid "failed to detect currency" msgstr "" -#: PokerStarsToFpdb.py:358 -msgid "reading antes" -msgstr "" - #: Stats.py:103 msgid "exception getting stat %s for player %s %s" msgstr "" @@ -2321,11 +2377,11 @@ msgstr "" msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" msgstr "" -#: WinTables.py:70 +#: WinTables.py:82 msgid "Window %s not found. Skipping." msgstr "" -#: WinTables.py:73 +#: WinTables.py:85 msgid "self.window doesn't exist? why?" msgstr "" @@ -2574,10 +2630,6 @@ msgstr "" msgid "B" msgstr "" -#: fpdb.pyw:832 -msgid "_Bulk Import" -msgstr "" - #: fpdb.pyw:833 msgid "I" msgstr "" @@ -2642,7 +2694,7 @@ msgstr "" msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "" -#: fpdb.pyw:842 fpdb.pyw:1059 +#: fpdb.pyw:842 fpdb.pyw:1058 msgid "Session Stats" msgstr "" @@ -2702,6 +2754,11 @@ msgstr "" msgid "CONFIG FILE ERROR" msgstr "" +#: fpdb.pyw:876 +msgid "" +"Logfile is %s\n" +msgstr "" + #: fpdb.pyw:878 msgid "Config file" msgstr "" @@ -2720,96 +2777,96 @@ msgstr "" msgid "section of the Preferences window (Main menu) before trying to import hands." msgstr "" -#: fpdb.pyw:904 -msgid "Connected to SQLite: %(database)s" +#: fpdb.pyw:903 +msgid "Connected to SQLite: %s" msgstr "" -#: fpdb.pyw:908 +#: fpdb.pyw:907 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" -#: fpdb.pyw:909 +#: fpdb.pyw:908 msgid "Please check that the MySQL service has been started" msgstr "" -#: fpdb.pyw:913 +#: fpdb.pyw:912 msgid "Postgres client reports: Unable to connect - " msgstr "" -#: fpdb.pyw:914 +#: fpdb.pyw:913 msgid "Please check that the Postgres service has been started" msgstr "" -#: fpdb.pyw:938 +#: fpdb.pyw:937 msgid "Strong Warning - Invalid database version" msgstr "" -#: fpdb.pyw:940 +#: fpdb.pyw:939 msgid "An invalid DB version or missing tables have been detected." msgstr "" -#: fpdb.pyw:944 +#: fpdb.pyw:943 msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu." msgstr "" -#: fpdb.pyw:948 +#: fpdb.pyw:947 msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc." msgstr "" -#: fpdb.pyw:961 +#: fpdb.pyw:960 msgid "Status: Connected to %s database named %s on host %s" msgstr "" -#: fpdb.pyw:971 +#: fpdb.pyw:970 msgid "" "\n" "Global lock taken by" msgstr "" -#: fpdb.pyw:974 +#: fpdb.pyw:973 msgid "" "\n" "Failed to get global lock, it is currently held by" msgstr "" -#: fpdb.pyw:984 +#: fpdb.pyw:983 msgid "Quitting normally" msgstr "" -#: fpdb.pyw:1008 +#: fpdb.pyw:1007 msgid "" "Global lock released.\n" msgstr "" -#: fpdb.pyw:1015 +#: fpdb.pyw:1014 msgid "Auto Import" msgstr "" -#: fpdb.pyw:1022 +#: fpdb.pyw:1021 msgid "Bulk Import" msgstr "" -#: fpdb.pyw:1028 +#: fpdb.pyw:1027 msgid "eMail Import" msgstr "" -#: fpdb.pyw:1035 +#: fpdb.pyw:1034 msgid "Ring Player Stats" msgstr "" -#: fpdb.pyw:1041 +#: fpdb.pyw:1040 msgid "Tourney Player Stats" msgstr "" -#: fpdb.pyw:1047 +#: fpdb.pyw:1046 msgid "Tourney Viewer" msgstr "" -#: fpdb.pyw:1053 +#: fpdb.pyw:1052 msgid "Positional Stats" msgstr "" -#: fpdb.pyw:1063 +#: fpdb.pyw:1062 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n" @@ -2830,40 +2887,40 @@ msgid "" "You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory." msgstr "" -#: fpdb.pyw:1080 +#: fpdb.pyw:1079 msgid "Help" msgstr "" -#: fpdb.pyw:1087 +#: fpdb.pyw:1086 msgid "Graphs" msgstr "" -#: fpdb.pyw:1137 +#: fpdb.pyw:1138 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n" msgstr "" -#: fpdb.pyw:1166 +#: fpdb.pyw:1167 msgid "fpdb starting ..." msgstr "" -#: fpdb.pyw:1215 +#: fpdb.pyw:1224 msgid "FPDB WARNING" msgstr "" -#: fpdb.pyw:1234 +#: fpdb.pyw:1243 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" -#: fpdb.pyw:1242 +#: fpdb.pyw:1251 msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed." msgstr "" -#: fpdb.pyw:1247 +#: fpdb.pyw:1256 msgid "Select HH Output Directory" msgstr "" @@ -2875,87 +2932,87 @@ msgstr "" msgid "Import database module: psycopg2 not found" msgstr "" -#: fpdb_import.py:178 +#: fpdb_import.py:189 msgid "Database ID for %s not found" msgstr "" -#: fpdb_import.py:180 +#: fpdb_import.py:191 msgid "[ERROR] More than 1 Database ID found for %s - Multiple currencies not implemented yet" msgstr "" -#: fpdb_import.py:216 +#: fpdb_import.py:227 msgid "Attempted to add non-directory: '%s' as an import directory" msgstr "" -#: fpdb_import.py:226 +#: fpdb_import.py:237 msgid "Started at %s -- %d files to import. indexes: %s" msgstr "" -#: fpdb_import.py:235 +#: fpdb_import.py:246 msgid "No need to drop indexes." msgstr "" -#: fpdb_import.py:254 +#: fpdb_import.py:265 msgid "writers finished already" msgstr "" -#: fpdb_import.py:257 +#: fpdb_import.py:268 msgid "waiting for writers to finish ..." msgstr "" -#: fpdb_import.py:267 +#: fpdb_import.py:278 msgid " ... writers finished" msgstr "" -#: fpdb_import.py:273 +#: fpdb_import.py:284 msgid "No need to rebuild indexes." msgstr "" -#: fpdb_import.py:277 +#: fpdb_import.py:288 msgid "No need to rebuild hudcache." msgstr "" -#: fpdb_import.py:302 +#: fpdb_import.py:313 msgid "sending finish msg qlen =" msgstr "" -#: fpdb_import.py:428 fpdb_import.py:430 +#: fpdb_import.py:439 fpdb_import.py:441 msgid "Converting " msgstr "" -#: fpdb_import.py:466 +#: fpdb_import.py:477 msgid "Hand processed but empty" msgstr "" -#: fpdb_import.py:479 +#: fpdb_import.py:490 msgid "fpdb_import: sending hand to hud" msgstr "" -#: fpdb_import.py:482 +#: fpdb_import.py:493 msgid "Failed to send hand to HUD: %s" msgstr "" -#: fpdb_import.py:493 +#: fpdb_import.py:508 msgid "Unknown filter filter_name:'%s' in filter:'%s'" msgstr "" -#: fpdb_import.py:504 +#: fpdb_import.py:519 msgid "Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge.net so we can fix the problem." msgstr "" -#: fpdb_import.py:505 +#: fpdb_import.py:520 msgid "Filename:" msgstr "" -#: fpdb_import.py:506 +#: fpdb_import.py:521 msgid "Here is the first line of the hand so you can identify it. Please mention that the error was a ValueError:" msgstr "" -#: fpdb_import.py:508 +#: fpdb_import.py:523 msgid "Hand logged to hand-errors.txt" msgstr "" -#: fpdb_import.py:516 +#: fpdb_import.py:531 msgid "CLI for fpdb_import is now available as CliFpdb.py" msgstr "" From 3a6b0002bddecee7988b343bf8ae783791a1372b Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 23 Aug 2010 13:22:40 +0800 Subject: [PATCH 247/641] Remove Table viewer options from settings hash --- pyfpdb/GuiBulkImport.py | 1 - pyfpdb/GuiRingPlayerStats.py | 1 - 2 files changed, 2 deletions(-) diff --git a/pyfpdb/GuiBulkImport.py b/pyfpdb/GuiBulkImport.py index dc023e01..943a81fd 100755 --- a/pyfpdb/GuiBulkImport.py +++ b/pyfpdb/GuiBulkImport.py @@ -378,7 +378,6 @@ def main(argv=None): else: settings['os'] = 'linuxmac' settings.update(config.get_db_parameters()) - settings.update(config.get_tv_parameters()) settings.update(config.get_import_parameters()) settings.update(config.get_default_paths()) diff --git a/pyfpdb/GuiRingPlayerStats.py b/pyfpdb/GuiRingPlayerStats.py index 081e1b70..ef519290 100644 --- a/pyfpdb/GuiRingPlayerStats.py +++ b/pyfpdb/GuiRingPlayerStats.py @@ -69,7 +69,6 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): settings = {} settings.update(self.conf.get_db_parameters()) - settings.update(self.conf.get_tv_parameters()) settings.update(self.conf.get_import_parameters()) settings.update(self.conf.get_default_paths()) From bc755f3e5f2736435c1552c8cf4127bf1eb29a8e Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 23 Aug 2010 13:23:39 +0800 Subject: [PATCH 248/641] OnGame: Fix re_CollectPot So that it actually finds the player that has won money --- pyfpdb/OnGameToFpdb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index 088920d3..ee281c1d 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -132,8 +132,8 @@ class OnGame(HandHistoryConverter): self.re_ShowdownAction = re.compile('(?P.*) shows \[ (?P.+) \]') # TODO: read SUMMARY correctly for collected pot stuff. - #Uchilka, bets $11.75, collects $23.04, net $11.29 - self.re_CollectPot = re.compile('(?P.*), bets.+, collects \$(?P\d*\.?\d*), net.* ') + # Main pot: 6.75 won by player3 (6.45) + self.re_CollectPot = re.compile('Main pot: (?P\d*\.?\d*) won by %(PLYR)s' % subst) self.re_sitsOut = re.compile('(?P.*) sits out') def readSupportedGames(self): From acfc110d0378ef90b159c896f5aab657a72cdb5e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 23 Aug 2010 07:28:30 +0200 Subject: [PATCH 249/641] remove remaining calls to removed config section --- pyfpdb/AlchemyTables.py | 1 - pyfpdb/GuiAutoImport.py | 1 - pyfpdb/GuiBulkImport.py | 1 - pyfpdb/GuiPositionalStats.py | 1 - pyfpdb/GuiRingPlayerStats.py | 1 - pyfpdb/GuiSessionViewer.py | 1 - pyfpdb/TestHandsPlayers.py | 2 +- pyfpdb/test_Betfair.py | 1 - pyfpdb/test_PokerStars.py | 1 - 9 files changed, 1 insertion(+), 9 deletions(-) diff --git a/pyfpdb/AlchemyTables.py b/pyfpdb/AlchemyTables.py index c74665b1..e89380a7 100644 --- a/pyfpdb/AlchemyTables.py +++ b/pyfpdb/AlchemyTables.py @@ -450,7 +450,6 @@ def sss(): self.settings['os']="windows" self.settings.update(self.config.get_db_parameters()) - self.settings.update(self.config.get_tv_parameters()) self.settings.update(self.config.get_import_parameters()) self.settings.update(self.config.get_default_paths()) diff --git a/pyfpdb/GuiAutoImport.py b/pyfpdb/GuiAutoImport.py index 1d4c2053..c386f475 100755 --- a/pyfpdb/GuiAutoImport.py +++ b/pyfpdb/GuiAutoImport.py @@ -334,7 +334,6 @@ if __name__== "__main__": else: settings['os'] = 'linuxmac' settings.update(config.get_db_parameters('fpdb')) - settings.update(config.get_tv_parameters()) settings.update(config.get_import_parameters()) settings.update(config.get_default_paths()) diff --git a/pyfpdb/GuiBulkImport.py b/pyfpdb/GuiBulkImport.py index dc023e01..943a81fd 100755 --- a/pyfpdb/GuiBulkImport.py +++ b/pyfpdb/GuiBulkImport.py @@ -378,7 +378,6 @@ def main(argv=None): else: settings['os'] = 'linuxmac' settings.update(config.get_db_parameters()) - settings.update(config.get_tv_parameters()) settings.update(config.get_import_parameters()) settings.update(config.get_default_paths()) diff --git a/pyfpdb/GuiPositionalStats.py b/pyfpdb/GuiPositionalStats.py index 4963a88f..2f7c36cc 100644 --- a/pyfpdb/GuiPositionalStats.py +++ b/pyfpdb/GuiPositionalStats.py @@ -53,7 +53,6 @@ class GuiPositionalStats (threading.Thread): settings = {} settings.update(self.conf.get_db_parameters()) - settings.update(self.conf.get_tv_parameters()) settings.update(self.conf.get_import_parameters()) settings.update(self.conf.get_default_paths()) diff --git a/pyfpdb/GuiRingPlayerStats.py b/pyfpdb/GuiRingPlayerStats.py index 081e1b70..ef519290 100644 --- a/pyfpdb/GuiRingPlayerStats.py +++ b/pyfpdb/GuiRingPlayerStats.py @@ -69,7 +69,6 @@ class GuiRingPlayerStats (GuiPlayerStats.GuiPlayerStats): settings = {} settings.update(self.conf.get_db_parameters()) - settings.update(self.conf.get_tv_parameters()) settings.update(self.conf.get_import_parameters()) settings.update(self.conf.get_default_paths()) diff --git a/pyfpdb/GuiSessionViewer.py b/pyfpdb/GuiSessionViewer.py index 56df5e78..d4ffaccc 100755 --- a/pyfpdb/GuiSessionViewer.py +++ b/pyfpdb/GuiSessionViewer.py @@ -82,7 +82,6 @@ class GuiSessionViewer (threading.Thread): settings = {} settings.update(self.conf.get_db_parameters()) - settings.update(self.conf.get_tv_parameters()) settings.update(self.conf.get_import_parameters()) settings.update(self.conf.get_default_paths()) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index a49cd88b..6179e11d 100644 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- import sys import os import codecs @@ -76,7 +77,6 @@ def main(argv=None): sql = SQL.Sql(db_server = 'sqlite') settings = {} settings.update(config.get_db_parameters()) - settings.update(config.get_tv_parameters()) settings.update(config.get_import_parameters()) settings.update(config.get_default_paths()) db.recreate_tables() diff --git a/pyfpdb/test_Betfair.py b/pyfpdb/test_Betfair.py index 231b1bf3..aba5655b 100644 --- a/pyfpdb/test_Betfair.py +++ b/pyfpdb/test_Betfair.py @@ -30,7 +30,6 @@ sql = SQL.Sql(db_server = 'sqlite') settings = {} settings.update(config.get_db_parameters()) -settings.update(config.get_tv_parameters()) settings.update(config.get_import_parameters()) settings.update(config.get_default_paths()) diff --git a/pyfpdb/test_PokerStars.py b/pyfpdb/test_PokerStars.py index 5178adef..5824c471 100755 --- a/pyfpdb/test_PokerStars.py +++ b/pyfpdb/test_PokerStars.py @@ -30,7 +30,6 @@ sql = SQL.Sql(db_server = 'sqlite') settings = {} settings.update(config.get_db_parameters()) -settings.update(config.get_tv_parameters()) settings.update(config.get_import_parameters()) settings.update(config.get_default_paths()) From ce5d029d0b70583dc11e1f50c7f792a64037daff Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 23 Aug 2010 13:29:41 +0800 Subject: [PATCH 250/641] OnGame: Make NLHE parse --- pyfpdb/OnGameToFpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index ee281c1d..a2320e74 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -78,7 +78,7 @@ class OnGame(HandHistoryConverter): Start\shand:\s(?P.*) Table:\s(?P
[\'\w\s]+)\s\[\d+\]\s\( ( - (?PNo\sLimit|Limit|LIMIT|Pot\sLimit)\s + (?PNO_LIMIT|Limit|LIMIT|Pot\sLimit)\s (?PTEXAS_HOLDEM|RAZZ)\s (?P[.0-9]+)/ (?P[.0-9]+) From ccb62b4c80ce045d6e77dc3da50b6800a520fbaf Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 23 Aug 2010 07:43:02 +0200 Subject: [PATCH 251/641] enter character encoding in english PO file --- pyfpdb/locale/fpdb-en_GB.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index b5023daf..def83ac3 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -10,7 +10,7 @@ msgstr "" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: ENCODING\n" "Generated-By: pygettext.py 1.5\n" From ce93c2f7fe6fc146d03aaa3e3d1f52e24401d326 Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 23 Aug 2010 13:50:04 +0800 Subject: [PATCH 252/641] OnGame: Parse herocards --- pyfpdb/OnGameToFpdb.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index a2320e74..a8b82c1b 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -122,7 +122,7 @@ class OnGame(HandHistoryConverter): self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) self.re_PostBoth = re.compile('.*\n(?P.*): posts small \& big blinds \(\$? (?P[.0-9]+)\)') - self.re_HeroCards = re.compile('.*\nDealt\sto\s(?P.*)\s\[ (?P.*) \]') + self.re_HeroCards = re.compile('Dealing\sto\s%(PLYR)s:\s\[(?P.*)\]' % subst) #lopllopl checks, Eurolll checks, .Lucchess checks. self.re_Action = re.compile('(, )?(?P.*?)(?P bets| checks| raises| calls| folds)( (?P\d*\.?\d*))?( and is all-in)?') @@ -275,17 +275,15 @@ class OnGame(HandHistoryConverter): hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) def readHeroCards(self, hand): - m = self.re_HeroCards.search(hand.handText) - if(m == None): - #Not involved in hand - hand.involved = False - else: - hand.hero = m.group('PNAME') - # "2c, qh" -> set(["2c","qc"]) - # Also works with Omaha hands. - cards = m.group('CARDS') - cards = set(cards.split(',')) - hand.addHoleCards(cards, m.group('PNAME')) + # 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: + hand.hero = found.group('PNAME') + newcards = found.group('CARDS').split(', ') + hand.addHoleCards(street, hand.hero, closed=newcards, shown=False, mucked=False, dealt=True) def readAction_old(self, hand, street): m = self.re_Action.finditer(hand.streets.group(street)) From 137cadd4917087f44383317a14ce343a4d0df89d Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 23 Aug 2010 14:17:30 +0800 Subject: [PATCH 253/641] OnGame: Remove copied function --- pyfpdb/OnGameToFpdb.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index a8b82c1b..00ecf6ae 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -285,24 +285,6 @@ class OnGame(HandHistoryConverter): newcards = found.group('CARDS').split(', ') hand.addHoleCards(street, hand.hero, closed=newcards, shown=False, mucked=False, dealt=True) - def readAction_old(self, hand, street): - m = self.re_Action.finditer(hand.streets.group(street)) - for action in m: - if action.group('ATYPE') == ' raises': - hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') ) - elif action.group('ATYPE') == ' calls': - hand.addCall( street, action.group('PNAME'), action.group('BET') ) - elif action.group('ATYPE') == ' bets': - hand.addBet( street, action.group('PNAME'), action.group('BET') ) - elif action.group('ATYPE') == ' folds': - hand.addFold( street, action.group('PNAME')) - elif action.group('ATYPE') == ' checks': - hand.addCheck( street, action.group('PNAME')) - else: - print "DEBUG: unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),) - #hand.actions[street] += [[action.group('PNAME'), action.group('ATYPE')]] - # TODO: Everleaf does not record uncalled bets. - def readAction(self, hand, street): m = self.re_Action.finditer(hand.streets[street]) for action in m: From 66da700df816c724d8b303d8658fa91d4dd56414 Mon Sep 17 00:00:00 2001 From: Worros Date: Mon, 23 Aug 2010 14:42:58 +0800 Subject: [PATCH 254/641] HUD_Config.example: Add OnGame section, remove Betfair --- pyfpdb/HUD_config.xml.example | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index 977b6060..dde3626b 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -443,16 +443,7 @@ Left-Drag to Move" - - + @@ -473,7 +464,7 @@ Left-Drag to Move" - + @@ -488,8 +479,7 @@ Left-Drag to Move" - - + From 9949185214c0b00059cfdb63b5b868638a2e521d Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Mon, 23 Aug 2010 16:35:01 +0300 Subject: [PATCH 255/641] Modify build script to install locales When fpdb is built, the prebuilt .mo files from locale/$LANG/$TYPE/ are now automatically copied to target directory. For debian builds this means that all locales are placed in $INSTROOT/usr/share/locale and should be instantly usable for inclusion. --- setup.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/setup.py b/setup.py index 83e46a0c..f114553d 100644 --- a/setup.py +++ b/setup.py @@ -10,6 +10,36 @@ # Python packaging for fpdb from distutils.core import setup +from distutils.command.install_data import install_data as INST + +import glob, string, os + + +class inst_translations(INST): + + # Return triples for installations + def __locales(self, rootdir): + _globstr = '%s/*/*/*.mo' % rootdir + paths = glob.glob(_globstr) + _locales = [] + for p in paths: + rp = string.split(p, '/', 2) + (lang, loc, mo) = string.split(rp[2], '/') + _locales.append( (lang, loc, mo) ) + return _locales + + def run(self): + locales = self.__locales('pyfpdb/locale') + for (lang, loc, mo_file) in locales: + lang_dir = os.path.join('share', 'locale', lang, loc) + lang_file = os.path.join('pyfpdb/locale', lang, loc, mo_file) + self.data_files.append( (lang_dir, [lang_file]) ) + INST.run(self) + + +commands = { + 'install_data': inst_translations +} setup(name = 'fpdb', description = 'Free Poker Database', @@ -18,6 +48,7 @@ setup(name = 'fpdb', author_email = 'fpdb-main@lists.sourceforge.net', packages = ['fpdb'], package_dir = { 'fpdb' : 'pyfpdb' }, + cmdclass = commands, data_files = [ ('/usr/share/pixmaps', ['gfx/fpdb-icon.png', 'gfx/fpdb-icon2.png', From edae36d1088cc27396b7467c7f81a996acf1f4db Mon Sep 17 00:00:00 2001 From: Worros Date: Tue, 24 Aug 2010 11:09:13 +0800 Subject: [PATCH 256/641] THP: Create Error class for recording and reporting errors usefully --- pyfpdb/TestHandsPlayers.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index 6179e11d..e803b03a 100644 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -10,13 +10,19 @@ import Database import SQL import fpdb_import -def error_report( filename, hand, stat, ghash, testhash, player): - print "Regression Test Error:" - print "\tFile: %s" % filename - print "\tStat: %s" % stat - print "\tPlayer: %s" % player -def compare(leaf, importer): +class FpdbError: + def __init__(self): + self.errorcount = 0 + + def error_report(self, filename, hand, stat, ghash, testhash, player): + print "Regression Test Error:" + print "\tFile: %s" % filename + print "\tStat: %s" % stat + print "\tPlayer: %s" % player + self.errorcount += 1 + +def compare(leaf, importer, errors): filename = leaf #print "DEBUG: fileanme: %s" % filename @@ -52,21 +58,21 @@ def compare(leaf, importer): pass else: # Stats don't match - Doh! - error_report(filename, hand, stat, ghash, testhash, p) + errors.error_report(filename, hand, stat, ghash, testhash, p) importer.clearFileList() -def walk_testfiles(dir, function, importer): +def walk_testfiles(dir, function, importer, errors): """Walks a directory, and executes a callback on each file """ dir = os.path.abspath(dir) for file in [file for file in os.listdir(dir) if not file in [".",".."]]: nfile = os.path.join(dir,file) if os.path.isdir(nfile): - walk_testfiles(nfile, compare, importer) + walk_testfiles(nfile, compare, importer, errors) else: - compare(nfile, importer) + compare(nfile, importer, errors) def main(argv=None): if argv is None: @@ -86,8 +92,14 @@ def main(argv=None): importer.setThreads(-1) importer.setCallHud(False) importer.setFakeCacheHHC(True) + + errors = FpdbError() - walk_testfiles("regression-test-files/cash/Stars/", compare, importer) + walk_testfiles("regression-test-files/cash/Stars/", compare, importer, errors) + + print "---------------------" + print "Total Errors: %d" % errors.errorcount + print "---------------------" if __name__ == '__main__': sys.exit(main()) From fb9d0c85c7a1a4bd795a58f167172a1a4982dab1 Mon Sep 17 00:00:00 2001 From: Worros Date: Tue, 24 Aug 2010 11:55:30 +0800 Subject: [PATCH 257/641] THP: Make THP print a better error message --- pyfpdb/TestHandsPlayers.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index e803b03a..5da4d672 100644 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -14,14 +14,24 @@ import fpdb_import class FpdbError: def __init__(self): self.errorcount = 0 + self.histogram = {} def error_report(self, filename, hand, stat, ghash, testhash, player): print "Regression Test Error:" print "\tFile: %s" % filename print "\tStat: %s" % stat print "\tPlayer: %s" % player + if filename in self.histogram: + self.histogram[filename] += 1 + else: + self.histogram[filename] = 1 self.errorcount += 1 + def print_histogram(self): + for f in self.histogram: + idx = f.find('regression') + print "(%3d) : %s" %(self.histogram[f], f[idx:]) + def compare(leaf, importer, errors): filename = leaf #print "DEBUG: fileanme: %s" % filename @@ -100,6 +110,7 @@ def main(argv=None): print "---------------------" print "Total Errors: %d" % errors.errorcount print "---------------------" + errors.print_histogram() if __name__ == '__main__': sys.exit(main()) From 59ed2ea1131a3d6f2480d044eb05372cbfae6d09 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 25 Aug 2010 11:59:31 +0800 Subject: [PATCH 258/641] Regression: Add .hp for 7-StudHL-USD-0.04-0.08-200911.Cardtest.txt Verified that the positions were correct for that hand --- ...tudHL-USD-0.04-0.08-200911.Cardtest.txt.hp | 752 ++++++++++++++++++ 1 file changed, 752 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Stars/Stud/7-StudHL-USD-0.04-0.08-200911.Cardtest.txt.hp diff --git a/pyfpdb/regression-test-files/cash/Stars/Stud/7-StudHL-USD-0.04-0.08-200911.Cardtest.txt.hp b/pyfpdb/regression-test-files/cash/Stars/Stud/7-StudHL-USD-0.04-0.08-200911.Cardtest.txt.hp new file mode 100644 index 00000000..8606f7bc --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Stud/7-StudHL-USD-0.04-0.08-200911.Cardtest.txt.hp @@ -0,0 +1,752 @@ +{ u'123smoothie': { 'card1': 0, + 'card2': 0, + 'card3': 29, + 'card4': 28, + 'card5': 47, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 2, + 'sitout': False, + 'startCards': 0, + 'startCash': 99, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -3, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Soroka69': { 'card1': 0, + 'card2': 0, + 'card3': 19, + 'card4': 43, + 'card5': 30, + 'card6': 40, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': True, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': True, + 'otherRaisedStreet4': True, + 'position': 4, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 7, + 'sitout': False, + 'startCards': 0, + 'startCash': 83, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 1, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 1, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': True, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': True, + 'street4CheckCallRaiseDone': True, + 'street4Raises': 0, + 'street4Seen': True, + 'totalProfit': -19, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'TomSludge': { 'card1': 0, + 'card2': 0, + 'card3': 46, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 5, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 6, + 'sitout': False, + 'startCards': 0, + 'startCash': 158, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -1, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'denny501': { 'card1': 0, + 'card2': 0, + 'card3': 27, + 'card4': 45, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 4, + 'sitout': False, + 'startCards': 0, + 'startCash': 71, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -3, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'gashpor': { 'card1': 3, + 'card2': 15, + 'card3': 17, + 'card4': 24, + 'card5': 23, + 'card6': 21, + 'card7': 5, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 2, + 'sawShowdown': True, + 'seatNo': 3, + 'sitout': False, + 'startCards': 0, + 'startCash': 140, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': True, + 'street2Bets': 1, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': True, + 'street3Bets': 1, + 'street3CBChance': True, + 'street3CBDone': True, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': True, + 'street4Bets': 1, + 'street4CBChance': True, + 'street4CBDone': True, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': True, + 'totalProfit': 13, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 40, + 'wonAtSD': 1.0, + 'wonWhenSeenStreet1': 1.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'rdiezchang': { 'card1': 0, + 'card2': 0, + 'card3': 26, + 'card4': 49, + 'card5': 48, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 8, + 'sitout': False, + 'startCards': 0, + 'startCash': 205, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -3, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u's0rrow': { 'card1': 32, + 'card2': 41, + 'card3': 4, + 'card4': 37, + 'card5': 38, + 'card6': 18, + 'card7': 16, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': True, + 'otherRaisedStreet4': True, + 'position': 6, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 2, + 'sawShowdown': True, + 'seatNo': 5, + 'sitout': False, + 'startCards': 0, + 'startCash': 152, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 1, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 1, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 1, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': True, + 'totalProfit': 13, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 40, + 'wonAtSD': 1.0, + 'wonWhenSeenStreet1': 1.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'u.pressure': { 'card1': 0, + 'card2': 0, + 'card3': 22, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 1, + 'sitout': False, + 'startCards': 0, + 'startCash': 1117, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -1, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}} From afa41229c8e7127b11aa4bf3863e83cfe228d17e Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 25 Aug 2010 12:01:17 +0800 Subject: [PATCH 259/641] Revert "Betfair: Fix for Betfair 2.0" This reverts commit 5d2e7cb32010891f621c31bb5a0c7e1f567f177d. --- pyfpdb/BetfairToFpdb.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index 62db0311..07ee2612 100755 --- a/pyfpdb/BetfairToFpdb.py +++ b/pyfpdb/BetfairToFpdb.py @@ -44,9 +44,8 @@ class Betfair(HandHistoryConverter): siteId = 7 # Needs to match id entry in Sites database # Static regexes - #re_SplitHands = re.compile(r'\n\n+') # Betfair 1.0 version re_GameInfo = re.compile("^(?PNL|PL|) (?P\$|)?(?P[.0-9]+)/\$?(?P[.0-9]+) (?P(Texas Hold\'em|Omaha Hi|Razz))", re.MULTILINE) - re_SplitHands = re.compile(r'End of hand .{2}-\d{7,9}-\d+ \*\*\*\*\*\n') + re_SplitHands = re.compile(r'\n\n+') re_HandInfo = re.compile("\*\*\*\*\* Betfair Poker Hand History for Game (?P[0-9]+) \*\*\*\*\*\n(?PNL|PL|) (?P\$|)?(?P[.0-9]+)/\$?(?P[.0-9]+) (?P(Texas Hold\'em|Omaha Hi|Razz)) - (?P[a-zA-Z]+, [a-zA-Z]+ \d+, \d\d:\d\d:\d\d GMT \d\d\d\d)\nTable (?P
[ a-zA-Z0-9]+) \d-max \(Real Money\)\nSeat (?P- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From fdfefc753fe46b46df9b5a8a940c72e871f2b0d4 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 25 Aug 2010 11:50:36 +0200 Subject: [PATCH 267/641] update GUI version string to git again --- pyfpdb/fpdb.pyw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index ca519c59..6e034931 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -129,7 +129,7 @@ import Configuration import Exceptions import Stats -VERSION = "0.20.905" +VERSION = "0.20.905 plus git" class fpdb: From 1821e16eb1c4bbabb92c12adc14e2b00ccf101a5 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Wed, 25 Aug 2010 13:21:31 +0200 Subject: [PATCH 268/641] l10n: revised Hungarian translation file Just replaced some words and expressions here and there to a more fitting one. --- pyfpdb/locale/fpdb-hu_HU.po | 54 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index e57b8877..8112617b 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.904\n" "POT-Creation-Date: 2010-08-17 20:08+CEST\n" -"PO-Revision-Date: 2010-08-17 23:49+0200\n" +"PO-Revision-Date: 2010-08-25 02:55+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -169,7 +169,8 @@ msgstr "" #: Database.py:475 Database.py:476 msgid "Failed to read settings table - recreating tables" -msgstr "Nem sikerült az olvasás a beállítások táblából - táblák létrehozása" +msgstr "" +"Nem sikerült az olvasás a beállítások táblából - táblák újra létrehozása" #: Database.py:480 Database.py:481 msgid "Failed to read settings table - please recreate tables" @@ -274,7 +275,7 @@ msgstr " index létrehozása nem sikerült: " #: Database.py:1134 Database.py:1135 msgid "Finished recreating tables" -msgstr "A táblák létrehozása befejeződött" +msgstr "A táblák újra létrehozása befejeződött" #: Database.py:1172 msgid "***Error creating tables: " @@ -555,7 +556,7 @@ msgstr "self.groups[%s] beállítva erre: %s" #: Filters.py:582 msgid "Min # Hands:" -msgstr "Minimum ennyi leosztással:" +msgstr "Min. leosztásszám:" #: Filters.py:648 msgid "INFO: No tourney types returned from database" @@ -575,11 +576,11 @@ msgstr "Nem található játék az adatbázisban" #: Filters.py:913 msgid " Clear Dates " -msgstr "Dátumok törlése" +msgstr "Törlés" #: Filters.py:940 fpdb.pyw:721 msgid "Pick a date" -msgstr "Válassz egy dátumot" +msgstr "Válassz napot" #: Filters.py:946 fpdb.pyw:727 msgid "Done" @@ -693,7 +694,7 @@ msgstr "Importálás kész" #: GuiBulkImport.py:139 msgid "bulk-import aborted - global lock not available" -msgstr "tömeges importálás megszakítva - nem elérhető a globális zárolás" +msgstr "importálás megszakítva - nem elérhető a globális zárolás" #: GuiBulkImport.py:165 msgid "Print Start/Stop Info" @@ -713,11 +714,11 @@ msgstr "Hiba esetén megáll" #: GuiBulkImport.py:214 msgid "Hands/file:" -msgstr "Leosztás/fájl" +msgstr "Leosztás/fájl:" #: GuiBulkImport.py:229 msgid "Drop indexes:" -msgstr "Indexek eldobása" +msgstr "Indexek eldobása:" #: GuiBulkImport.py:238 GuiBulkImport.py:288 msgid "auto" @@ -725,7 +726,7 @@ msgstr "automatikus" #: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:397 msgid "don't drop" -msgstr "ne dobja el" +msgstr "megtartás" #: GuiBulkImport.py:240 GuiBulkImport.py:290 msgid "drop" @@ -737,7 +738,7 @@ msgstr "HUD teszt mód" #: GuiBulkImport.py:251 msgid "Site filter:" -msgstr "Teremszűrő:" +msgstr "Terem:" #: GuiBulkImport.py:279 msgid "Drop HudCache:" @@ -1160,7 +1161,7 @@ msgstr "Statisztikák f_rissítése" #: GuiTourneyViewer.py:49 msgid "Enter the tourney number you want to display:" -msgstr "Add meg a megjelenítendő verseny azonosítóját" +msgstr "Add meg a megjelenítendő verseny azonosítóját:" #: GuiTourneyViewer.py:55 msgid "_Display" @@ -2584,12 +2585,12 @@ msgstr "Adatbázis statisztikák" #: fpdb.pyw:362 msgid "HUD Configurator - choose category" -msgstr "HUD beállító - válassz kategóriát" +msgstr "HUD beállító - válassz típust és méretet" #: fpdb.pyw:368 msgid "" "Please select the game category for which you want to configure HUD stats:" -msgstr "Válassz játéktípust, amelyre vonatkozóan akarod beállítani a HUD-ot:" +msgstr "Válassz játéktípust, amelyre vonatkozóan be akarod állítani a HUD-ot:" #: fpdb.pyw:420 msgid "HUD Configurator - please choose your stats" @@ -2602,8 +2603,7 @@ msgstr "Válaszd ki a lenti táblázatból a megjelenítendő statisztikákat." #: fpdb.pyw:430 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" -"Vedd figyelembe, hogy egy statisztikát nem választhatsz ki többször, " -"különben ki fog lépni." +"Egy statisztikát ne válassz ki többször, mert nem fog működni (ki fog lépni)." #: fpdb.pyw:434 msgid "" @@ -2616,7 +2616,7 @@ msgid "" "To configure things like colouring you will still have to manually edit your " "HUD_config.xml." msgstr "" -"Bizonyos dolgok, mint pl. a színezés beállításához egyelőre még kézzel kell " +"Bizonyos dolgok (pl. színezés) beállításához egyelőre még kézzel kell " "szerkesztened a HUD_config.xml fájlt." #: fpdb.pyw:545 @@ -2641,7 +2641,7 @@ msgstr "" #: fpdb.pyw:572 msgid "User cancelled recreating tables" -msgstr "A felhasználó mégsem generálja újra a táblákat." +msgstr "A felhasználó megszakította a táblák újra létrehozását" #: fpdb.pyw:579 msgid "Please confirm that you want to re-create the HUD cache." @@ -2750,7 +2750,7 @@ msgstr "_Importálás" #: fpdb.pyw:831 msgid "_Set HandHistory Archive Directory" -msgstr "Leo_sztástörténet archívumának könyvtára" +msgstr "Leo_sztásarchívum könyvtára" #: fpdb.pyw:832 msgid "B" @@ -2758,7 +2758,7 @@ msgstr "B" #: fpdb.pyw:832 msgid "_Bulk Import" -msgstr "_Tömeges importálás" +msgstr "_Importálás" #: fpdb.pyw:833 msgid "I" @@ -2766,7 +2766,7 @@ msgstr "I" #: fpdb.pyw:833 msgid "_Import through eMail/IMAP" -msgstr "Email _import (IMAP)" +msgstr "_Email import (IMAP)" #: fpdb.pyw:834 msgid "_Viewers" @@ -2802,7 +2802,7 @@ msgstr "P" #: fpdb.pyw:838 msgid "Ring _Player Stats (tabulated view)" -msgstr "Kész_pénzes statisztikák (táblázatos nézet)" +msgstr "Kész_pénzes statisztikák (táblázat)" #: fpdb.pyw:839 msgid "T" @@ -2810,7 +2810,7 @@ msgstr "T" #: fpdb.pyw:839 msgid "_Tourney Player Stats (tabulated view)" -msgstr "Versenyjá_tékos statisztikák (táblázatos nézet)" +msgstr "Versenyjá_tékos statisztikák (táblázat)" #: fpdb.pyw:840 msgid "Tourney _Viewer" @@ -2822,7 +2822,7 @@ msgstr "O" #: fpdb.pyw:841 msgid "P_ositional Stats (tabulated view, not on sqlite)" -msgstr "P_ozíciós statisztikák (táblázatos nézet, SQLite-tal nem megy)" +msgstr "P_ozíciós statisztikák (táblázat; SQLite-tal nem)" #: fpdb.pyw:842 fpdb.pyw:1059 msgid "Session Stats" @@ -2838,7 +2838,7 @@ msgstr "_Karbantartás" #: fpdb.pyw:845 msgid "Create or Recreate _Tables" -msgstr "_Táblák létrehozása vagy újragenerálása" +msgstr "_Táblák (újra) létrehozása" #: fpdb.pyw:846 msgid "Rebuild HUD Cache" @@ -2854,7 +2854,7 @@ msgstr "_Statisztikák" #: fpdb.pyw:849 msgid "Dump Database to Textfile (takes ALOT of time)" -msgstr "Adatbázis exportálása textfájlba (SOKÁIG tart)" +msgstr "Adatbázis kiírása textfájlba (SOKÁIG tart)" #: fpdb.pyw:850 msgid "_Help" @@ -2994,7 +2994,7 @@ msgstr "AutoImport" #: fpdb.pyw:1022 msgid "Bulk Import" -msgstr "Tömeges import" +msgstr "Importálás" #: fpdb.pyw:1028 msgid "eMail Import" From 73f50fff1238631613c769427960ac24b579e6ff Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 25 Aug 2010 13:36:12 +0200 Subject: [PATCH 269/641] l10n: update PO/MO files --- pyfpdb/locale/fpdb-de_DE.po | 3042 ++++++++++++++++++++++++++ pyfpdb/locale/fpdb-en_GB.po | 70 +- pyfpdb/locale/fpdb-hu_HU.po | 667 +++--- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 63100 -> 62387 bytes 4 files changed, 3446 insertions(+), 333 deletions(-) create mode 100644 pyfpdb/locale/fpdb-de_DE.po diff --git a/pyfpdb/locale/fpdb-de_DE.po b/pyfpdb/locale/fpdb-de_DE.po new file mode 100644 index 00000000..38f761df --- /dev/null +++ b/pyfpdb/locale/fpdb-de_DE.po @@ -0,0 +1,3042 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.20.905 plus git\n" +"POT-Creation-Date: 2010-08-25 13:31+CEST\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Steffen Schaumburg \n" +"Language-Team: de_DE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: UTF-8\n" +"Generated-By: pygettext.py 1.5\n" + + +#: Anonymise.py:55 +msgid "Could not find file %s" +msgstr "" + +#: Anonymise.py:61 +msgid "Output being written to" +msgstr "" + +#: BetfairToFpdb.py:83 +msgid "GameInfo regex did not match" +msgstr "" + +#: BetfairToFpdb.py:114 +msgid "Didn't match re_HandInfo" +msgstr "" + +#: BetfairToFpdb.py:170 +msgid "No bringin found" +msgstr "" + +#: BetfairToFpdb.py:206 OnGameToFpdb.py:308 PokerStarsToFpdb.py:440 +msgid "DEBUG: unimplemented readAction: '%s' '%s'" +msgstr "" + +#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 +msgid "parse input hand history" +msgstr "" + +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 +msgid "output translation to" +msgstr "" + +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 +msgid "follow (tail -f) the input" +msgstr "" + +#: Card.py:167 +msgid "fpdb card encoding(same as pokersource)" +msgstr "" + +#: Charset.py:45 Charset.py:60 Charset.py:75 Charset.py:86 Charset.py:94 +msgid "" +"Could not convert: \"%s\"\n" +msgstr "" + +#: Charset.py:48 Charset.py:63 Charset.py:78 +msgid "" +"Could not encode: \"%s\"\n" +msgstr "" + +#: Configuration.py:113 Configuration.py:126 +msgid "" +"Config file has been created at %s.\n" +msgstr "" + +#: Configuration.py:125 +msgid "" +"No %s found\n" +" in %s\n" +" or %s\n" +msgstr "" + +#: Configuration.py:131 Configuration.py:132 +msgid "" +"Error copying .example file, cannot fall back. Exiting.\n" +msgstr "" + +#: Configuration.py:136 Configuration.py:137 +msgid "" +"No %s found, cannot fall back. Exiting.\n" +msgstr "" + +#: Configuration.py:167 +msgid "Default logger initialised for " +msgstr "" + +#: Configuration.py:168 +msgid "Default logger intialised for " +msgstr "" + +#: Configuration.py:179 Database.py:438 Database.py:439 +msgid "Creating directory: '%s'" +msgstr "" + +#: Configuration.py:205 +msgid "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're not on a Mac, please report this problem." +msgstr "" + +#: Configuration.py:303 +msgid "Loading site" +msgstr "" + +#: Configuration.py:520 +msgid "config.general: adding %s = %s" +msgstr "" + +#: Configuration.py:567 Configuration.py:568 +msgid "bad number in xalignment was ignored" +msgstr "" + +#: Configuration.py:616 +msgid "missing config section raw_hands" +msgstr "" + +#: Configuration.py:622 +msgid "Invalid config value for raw_hands.save, defaulting to \"error\"" +msgstr "" + +#: Configuration.py:629 +msgid "Invalid config value for raw_hands.compression, defaulting to \"none\"" +msgstr "" + +#: Configuration.py:642 +msgid "missing config section raw_tourneys" +msgstr "" + +#: Configuration.py:648 +msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" +msgstr "" + +#: Configuration.py:655 +msgid "Invalid config value for raw_tourneys.compression, defaulting to \"none\"" +msgstr "" + +#: Configuration.py:673 Configuration.py:674 +msgid "Configuration file %s not found. Using defaults." +msgstr "" + +#: Configuration.py:690 +msgid "Reading configuration file %s" +msgstr "" + +#: Configuration.py:691 +msgid "" +"\n" +"Reading configuration file %s\n" +msgstr "" + +#: Configuration.py:696 +msgid "Error parsing %s. See error log file." +msgstr "" + +#: Database.py:74 +msgid "Not using sqlalchemy connection pool." +msgstr "" + +#: Database.py:81 +msgid "Not using numpy to define variance in sqlite." +msgstr "" + +#: Database.py:250 +msgid "Creating Database instance, sql = %s" +msgstr "" + +#: Database.py:389 +msgid "*** WARNING UNKNOWN MYSQL ERROR:" +msgstr "" + +#: Database.py:443 +msgid "Connecting to SQLite: %(database)s" +msgstr "" + +#: Database.py:455 +msgid "Some database functions will not work without NumPy support" +msgstr "" + +#: Database.py:476 +msgid "outdated or too new database version (%s) - please recreate tables" +msgstr "" + +#: Database.py:482 Database.py:483 +msgid "Failed to read settings table - recreating tables" +msgstr "" + +#: Database.py:487 Database.py:488 +msgid "Failed to read settings table - please recreate tables" +msgstr "" + +#: Database.py:509 +msgid "commit %s failed: info=%s value=%s" +msgstr "" + +#: Database.py:513 +msgid "commit failed" +msgstr "" + +#: Database.py:682 Database.py:711 +msgid "*** Database Error: " +msgstr "" + +#: Database.py:708 +msgid "Database: date n hands ago = " +msgstr "" + +#: Database.py:865 +msgid "ERROR: query %s result does not have player_id as first column" +msgstr "" + +#: Database.py:907 +msgid "getLastInsertId(): problem fetching insert_id? ret=%d" +msgstr "" + +#: Database.py:919 +msgid "getLastInsertId(%s): problem fetching lastval? row=%d" +msgstr "" + +#: Database.py:926 +msgid "getLastInsertId(): unknown backend: %d" +msgstr "" + +#: Database.py:931 +msgid "*** Database get_last_insert_id error: " +msgstr "" + +#: Database.py:985 Database.py:1407 +msgid "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." +msgstr "" + +#: Database.py:989 Database.py:1411 +msgid "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." +msgstr "" + +#: Database.py:997 Database.py:1285 +msgid "dropping mysql index " +msgstr "" + +#: Database.py:1003 Database.py:1290 Database.py:1298 Database.py:1305 +msgid " drop index failed: " +msgstr "" + +#: Database.py:1008 Database.py:1292 +msgid "dropping pg index " +msgstr "" + +#: Database.py:1021 +msgid "warning: drop index %s_%s_idx failed: %s, continuing ..." +msgstr "" + +#: Database.py:1025 +msgid "warning: index %s_%s_idx not dropped %s, continuing ..." +msgstr "" + +#: Database.py:1065 Database.py:1073 Database.py:1338 Database.py:1346 +msgid "creating foreign key " +msgstr "" + +#: Database.py:1071 Database.py:1092 Database.py:1344 +msgid " create foreign key failed: " +msgstr "" + +#: Database.py:1080 Database.py:1353 +msgid " create foreign key failed: " +msgstr "" + +#: Database.py:1087 +msgid "creating mysql index " +msgstr "" + +#: Database.py:1096 +msgid "creating pg index " +msgstr "" + +#: Database.py:1101 +msgid " create index failed: " +msgstr "" + +#: Database.py:1141 Database.py:1142 +msgid "Finished recreating tables" +msgstr "" + +#: Database.py:1181 +msgid "***Error creating tables: " +msgstr "" + +#: Database.py:1191 +msgid "*** Error unable to get databasecursor" +msgstr "" + +#: Database.py:1203 Database.py:1214 Database.py:1224 Database.py:1231 +msgid "***Error dropping tables: " +msgstr "" + +#: Database.py:1229 +msgid "*** Error in committing table drop" +msgstr "" + +#: Database.py:1243 Database.py:1244 +msgid "Creating mysql index %s %s" +msgstr "" + +#: Database.py:1249 Database.py:1258 +msgid " create index failed: " +msgstr "" + +#: Database.py:1252 Database.py:1253 +msgid "Creating pgsql index %s %s" +msgstr "" + +#: Database.py:1260 Database.py:1261 +msgid "Creating sqlite index %s %s" +msgstr "" + +#: Database.py:1266 +msgid "Create index failed: " +msgstr "" + +#: Database.py:1268 +msgid "Unknown database: MySQL, Postgres and SQLite supported" +msgstr "" + +#: Database.py:1273 +msgid "Error creating indexes: " +msgstr "" + +#: Database.py:1300 +msgid "Dropping sqlite index " +msgstr "" + +#: Database.py:1307 +msgid "Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" +msgstr "" + +#: Database.py:1321 Database.py:1361 +msgid " set_isolation_level failed: " +msgstr "" + +#: Database.py:1355 Database.py:1414 +msgid "Only MySQL and Postgres supported so far" +msgstr "" + +#: Database.py:1385 +msgid "dropping mysql foreign key" +msgstr "" + +#: Database.py:1389 +msgid " drop failed: " +msgstr "" + +#: Database.py:1392 +msgid "dropping pg foreign key" +msgstr "" + +#: Database.py:1404 +msgid "dropped pg foreign key %s_%s_fkey, continuing ..." +msgstr "" + +#: Database.py:1505 +msgid "Rebuild hudcache took %.1f seconds" +msgstr "" + +#: Database.py:1508 Database.py:1541 +msgid "Error rebuilding hudcache:" +msgstr "" + +#: Database.py:1553 Database.py:1559 +msgid "Error during analyze:" +msgstr "" + +#: Database.py:1563 +msgid "Analyze took %.1f seconds" +msgstr "" + +#: Database.py:1573 Database.py:1579 +msgid "Error during vacuum:" +msgstr "" + +#: Database.py:1583 +msgid "Vacuum took %.1f seconds" +msgstr "" + +#: Database.py:1595 +msgid "Error during lock_for_insert:" +msgstr "" + +#: Database.py:1992 +msgid "queue empty too long - writer stopping ..." +msgstr "" + +#: Database.py:1995 +msgid "writer stopping, error reading queue: " +msgstr "" + +#: Database.py:2020 +msgid "deadlock detected - trying again ..." +msgstr "" + +#: Database.py:2025 +msgid "too many deadlocks - failed to store hand " +msgstr "" + +#: Database.py:2029 +msgid "***Error storing hand: " +msgstr "" + +#: Database.py:2039 +msgid "db writer finished: stored %d hands (%d fails) in %.1f seconds" +msgstr "" + +#: Database.py:2049 +msgid "***Error sending finish: " +msgstr "" + +#: Database.py:2131 +msgid "invalid source in Database.createOrUpdateTourney" +msgstr "" + +#: Database.py:2144 +msgid "invalid source in Database.createOrUpdateTourneysPlayers" +msgstr "" + +#: Database.py:2270 +msgid "HandToWrite.init error: " +msgstr "" + +#: Database.py:2320 +msgid "HandToWrite.set_all error: " +msgstr "" + +#: Database.py:2351 +msgid "nutOmatic is id_player = %d" +msgstr "" + +#: Database.py:2359 +msgid "query plan: " +msgstr "" + +#: Database.py:2368 +msgid "cards =" +msgstr "" + +#: Database.py:2371 +msgid "get_stats took: %4.3f seconds" +msgstr "" + +#: Database.py:2373 Tables.py:448 +msgid "press enter to continue" +msgstr "" + +#: Filters.py:62 +msgid "All" +msgstr "" + +#: Filters.py:62 +msgid "None" +msgstr "" + +#: Filters.py:62 +msgid "Show _Limits" +msgstr "" + +#: Filters.py:63 +msgid "Show Number of _Players" +msgstr "" + +#: Filters.py:63 TourneyFilters.py:60 +msgid "And:" +msgstr "" + +#: Filters.py:63 TourneyFilters.py:60 +msgid "Between:" +msgstr "" + +#: Filters.py:64 +msgid "Games:" +msgstr "" + +#: Filters.py:64 TourneyFilters.py:59 +msgid "Hero:" +msgstr "" + +#: Filters.py:64 TourneyFilters.py:59 +msgid "Sites:" +msgstr "" + +#: Filters.py:65 +msgid "Limits:" +msgstr "" + +#: Filters.py:65 TourneyFilters.py:59 +msgid "Number of Players:" +msgstr "" + +#: Filters.py:66 +msgid "Grouping:" +msgstr "" + +#: Filters.py:66 +msgid "Show Position Stats:" +msgstr "" + +#: Filters.py:67 TourneyFilters.py:60 +msgid "Date:" +msgstr "" + +#: Filters.py:68 +msgid "All Players" +msgstr "" + +#: Filters.py:69 +msgid "Ring" +msgstr "" + +#: Filters.py:69 +msgid "Tourney" +msgstr "" + +#: Filters.py:103 TourneyFilters.py:116 +msgid "Either 0 or more than one site matched (%s) - EEK" +msgstr "" + +#: Filters.py:313 +msgid "%s was toggled %s" +msgstr "" + +#: Filters.py:313 +msgid "OFF" +msgstr "" + +#: Filters.py:313 +msgid "ON" +msgstr "" + +#: Filters.py:394 +msgid "self.sites[%s] set to %s" +msgstr "" + +#: Filters.py:400 +msgid "self.games[%s] set to %s" +msgstr "" + +#: Filters.py:406 +msgid "self.limit[%s] set to %s" +msgstr "" + +#: Filters.py:543 +msgid "self.seats[%s] set to %s" +msgstr "" + +#: Filters.py:549 +msgid "self.groups[%s] set to %s" +msgstr "" + +#: Filters.py:582 +msgid "Min # Hands:" +msgstr "" + +#: Filters.py:648 +msgid "INFO: No tourney types returned from database" +msgstr "" + +#: Filters.py:649 +msgid "No tourney types returned from database" +msgstr "" + +#: Filters.py:675 Filters.py:764 +msgid "INFO: No games returned from database" +msgstr "" + +#: Filters.py:676 Filters.py:765 +msgid "No games returned from database" +msgstr "" + +#: Filters.py:913 +msgid " Clear Dates " +msgstr "" + +#: Filters.py:940 fpdb.pyw:721 +msgid "Pick a date" +msgstr "" + +#: Filters.py:946 fpdb.pyw:727 +msgid "Done" +msgstr "" + +#: GuiAutoImport.py:85 +msgid "Time between imports in seconds:" +msgstr "" + +#: GuiAutoImport.py:116 GuiAutoImport.py:184 GuiAutoImport.py:261 +msgid " Start _Autoimport " +msgstr "" + +#: GuiAutoImport.py:135 +msgid "AutoImport Ready." +msgstr "" + +#: GuiAutoImport.py:148 +msgid "Please choose the path that you want to auto import" +msgstr "" + +#: GuiAutoImport.py:171 +msgid " _Auto Import Running " +msgstr "" + +#: GuiAutoImport.py:182 +msgid " Stop _Autoimport " +msgstr "" + +#: GuiAutoImport.py:207 +msgid "" +"\n" +"Global lock taken ... Auto Import Started.\n" +msgstr "" + +#: GuiAutoImport.py:209 +msgid " _Stop Autoimport " +msgstr "" + +#: GuiAutoImport.py:225 +msgid "opening pipe to HUD" +msgstr "" + +#: GuiAutoImport.py:237 +msgid "" +"\n" +"*** GuiAutoImport Error opening pipe: " +msgstr "" + +#: GuiAutoImport.py:249 +msgid "" +"\n" +"auto-import aborted - global lock not available" +msgstr "" + +#: GuiAutoImport.py:254 +msgid "" +"\n" +"Stopping autoimport - global lock released." +msgstr "" + +#: GuiAutoImport.py:256 +msgid "" +"\n" +" * Stop Autoimport: HUD already terminated" +msgstr "" + +#: GuiAutoImport.py:283 +msgid "Browse..." +msgstr "" + +#: GuiAutoImport.py:326 GuiBulkImport.py:354 +msgid "How often to print a one-line status report (0 (default) means never)" +msgstr "" + +#: GuiBulkImport.py:67 +msgid "" +"\n" +"Global lock taken ..." +msgstr "" + +#: GuiBulkImport.py:68 +msgid "Importing..." +msgstr "" + +#: GuiBulkImport.py:117 +msgid "GuiBulkImport.load done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" +msgstr "" + +#: GuiBulkImport.py:131 +msgid "Import Complete" +msgstr "" + +#: GuiBulkImport.py:139 +msgid "bulk-import aborted - global lock not available" +msgstr "" + +#: GuiBulkImport.py:165 +msgid "Print Start/Stop Info" +msgstr "" + +#: GuiBulkImport.py:172 +msgid "Hands/status print:" +msgstr "" + +#: GuiBulkImport.py:189 +msgid "Number of threads:" +msgstr "" + +#: GuiBulkImport.py:209 +msgid "Fail on error" +msgstr "" + +#: GuiBulkImport.py:214 +msgid "Hands/file:" +msgstr "" + +#: GuiBulkImport.py:229 +msgid "Drop indexes:" +msgstr "" + +#: GuiBulkImport.py:238 GuiBulkImport.py:288 +msgid "auto" +msgstr "" + +#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:398 +msgid "don't drop" +msgstr "" + +#: GuiBulkImport.py:240 GuiBulkImport.py:290 +msgid "drop" +msgstr "" + +#: GuiBulkImport.py:246 +msgid "HUD Test mode" +msgstr "" + +#: GuiBulkImport.py:251 +msgid "Site filter:" +msgstr "" + +#: GuiBulkImport.py:279 +msgid "Drop HudCache:" +msgstr "" + +#: GuiBulkImport.py:297 fpdb.pyw:832 +msgid "_Bulk Import" +msgstr "" + +#: GuiBulkImport.py:299 +msgid "Import clicked" +msgstr "" + +#: GuiBulkImport.py:317 +msgid "Waiting..." +msgstr "" + +#: GuiBulkImport.py:346 +msgid "Input file in quiet mode" +msgstr "" + +#: GuiBulkImport.py:348 +msgid "don't start gui; deprecated (just give a filename with -f)." +msgstr "" + +#: GuiBulkImport.py:350 +msgid "Conversion filter (*Full Tilt Poker, PokerStars, Everleaf, Absolute)" +msgstr "" + +#: GuiBulkImport.py:352 +msgid "If this option is passed it quits when it encounters any error" +msgstr "" + +#: GuiBulkImport.py:356 +msgid "Print some useful one liners" +msgstr "" + +#: GuiBulkImport.py:358 +msgid "Do the required conversion for Stars Archive format (ie. as provided by support" +msgstr "" + +#: GuiBulkImport.py:360 +msgid "Output the pprinted version of the HandsPlayer hash for regresion testing" +msgstr "" + +#: GuiBulkImport.py:365 +msgid "USAGE:" +msgstr "" + +#: GuiBulkImport.py:366 +msgid "PokerStars converter: ./GuiBulkImport.py -c PokerStars -f filename" +msgstr "" + +#: GuiBulkImport.py:367 +msgid "Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" +msgstr "" + +#: GuiBulkImport.py:368 +msgid "Everleaf converter: ./GuiBulkImport.py -c Everleaf -f filename" +msgstr "" + +#: GuiBulkImport.py:369 +msgid "Absolute converter: ./GuiBulkImport.py -c Absolute -f filename" +msgstr "" + +#: GuiBulkImport.py:370 +msgid "PartyPoker converter: ./GuiBulkImport.py -c PartyPoker -f filename" +msgstr "" + +#: GuiBulkImport.py:385 +msgid "-q is deprecated. Just use \"-f filename\" instead" +msgstr "" + +#: GuiBulkImport.py:409 +msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" +msgstr "" + +#: GuiDatabase.py:106 GuiLogView.py:96 +msgid "Refresh" +msgstr "" + +#: GuiDatabase.py:111 +msgid "Type" +msgstr "" + +#: GuiDatabase.py:112 +msgid "Name" +msgstr "" + +#: GuiDatabase.py:113 +msgid "Description" +msgstr "" + +#: GuiDatabase.py:114 GuiImapFetcher.py:119 +msgid "Username" +msgstr "" + +#: GuiDatabase.py:115 GuiImapFetcher.py:119 +msgid "Password" +msgstr "" + +#: GuiDatabase.py:116 +msgid "Host" +msgstr "" + +#: GuiDatabase.py:117 +msgid "Default" +msgstr "" + +#: GuiDatabase.py:118 +msgid "Status" +msgstr "" + +#: GuiDatabase.py:251 +msgid "Testing database connections ... " +msgstr "" + +#: GuiDatabase.py:281 +msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" +msgstr "" + +#: GuiDatabase.py:284 +msgid " connected ok" +msgstr "" + +#: GuiDatabase.py:291 +msgid " not connected but no exception" +msgstr "" + +#: GuiDatabase.py:293 fpdb.pyw:905 +msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" +msgstr "" + +#: GuiDatabase.py:297 +msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started" +msgstr "" + +#: GuiDatabase.py:301 fpdb.pyw:910 +msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" +msgstr "" + +#: GuiDatabase.py:304 +msgid "Postgres client reports: Unable to connect - Please check that the Postgres service has been started" +msgstr "" + +#: GuiDatabase.py:321 +msgid "finished." +msgstr "" + +#: GuiDatabase.py:331 +msgid "loaddbs error: " +msgstr "" + +#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 +msgid "***sortCols error: " +msgstr "" + +#: GuiDatabase.py:354 +msgid "sortCols error: " +msgstr "" + +#: GuiDatabase.py:424 GuiLogView.py:213 +msgid "Test Log Viewer" +msgstr "" + +#: GuiDatabase.py:429 GuiLogView.py:218 +msgid "Log Viewer" +msgstr "" + +#: GuiGraphViewer.py:39 +msgid "" +"Failed to load libs for graphing, graphing will not function. Please\n" +" install numpy and matplotlib if you want to use graphs." +msgstr "" + +#: GuiGraphViewer.py:41 +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 "" + +#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:354 +msgid "***Error: " +msgstr "" + +#: GuiGraphViewer.py:171 GuiPositionalStats.py:177 GuiRingPlayerStats.py:251 +#: GuiSessionViewer.py:203 GuiTourneyPlayerStats.py:277 +msgid "No sites selected - defaulting to PokerStars" +msgstr "" + +#: GuiGraphViewer.py:176 GuiPositionalStats.py:180 GuiRingPlayerStats.py:254 +#: GuiSessionViewer.py:206 GuiTourneyPlayerStats.py:280 +msgid "No player ids found" +msgstr "" + +#: GuiGraphViewer.py:181 GuiPositionalStats.py:183 GuiRingPlayerStats.py:257 +#: GuiSessionViewer.py:209 +msgid "No limits found" +msgstr "" + +#: GuiGraphViewer.py:191 +msgid "Graph generated in: %s" +msgstr "" + +#: GuiGraphViewer.py:195 +msgid "Hands" +msgstr "" + +#: GuiGraphViewer.py:199 +msgid "No Data for Player(s) Found" +msgstr "" + +#: GuiGraphViewer.py:222 GuiGraphViewer.py:241 +msgid "" +"Hands: %d\n" +"Profit: $%.2f" +msgstr "" + +#: GuiGraphViewer.py:223 GuiGraphViewer.py:242 +msgid "Showdown: $%.2f" +msgstr "" + +#: GuiGraphViewer.py:224 GuiGraphViewer.py:243 +msgid "Non-showdown: $%.2f" +msgstr "" + +#: GuiGraphViewer.py:232 +msgid "Profit graph for ring games" +msgstr "" + +#: GuiGraphViewer.py:352 +msgid "Please choose the directory you wish to export to:" +msgstr "" + +#: GuiGraphViewer.py:365 +msgid "Closed, no graph exported" +msgstr "" + +#: GuiGraphViewer.py:383 +msgid "Graph created" +msgstr "" + +#: GuiImapFetcher.py:49 +msgid "To cancel just close this tab." +msgstr "" + +#: GuiImapFetcher.py:52 +msgid "_Save" +msgstr "" + +#: GuiImapFetcher.py:56 +msgid "_Import All" +msgstr "" + +#: GuiImapFetcher.py:60 +msgid "If you change the config you must save before importing" +msgstr "" + +#: GuiImapFetcher.py:98 +msgid "Starting import. Please wait." +msgstr "" + +#: GuiImapFetcher.py:103 +msgid "Finished import without error." +msgstr "" + +#: GuiImapFetcher.py:106 +msgid "Login to mailserver failed: please check mailserver, username and password" +msgstr "" + +#: GuiImapFetcher.py:109 +msgid "Could not connect to mailserver: check mailserver and use SSL settings and internet connectivity" +msgstr "" + +#: GuiImapFetcher.py:119 +msgid "Fetch Type" +msgstr "" + +#: GuiImapFetcher.py:119 +msgid "Mail Folder" +msgstr "" + +#: GuiImapFetcher.py:119 +msgid "Mailserver" +msgstr "" + +#: GuiImapFetcher.py:119 +msgid "Site" +msgstr "" + +#: GuiImapFetcher.py:119 +msgid "Use SSL" +msgstr "" + +#: GuiImapFetcher.py:151 +msgid "Yes" +msgstr "" + +#: GuiImapFetcher.py:152 +msgid "No" +msgstr "" + +#: GuiLogView.py:61 +msgid "Log Messages" +msgstr "" + +#: GuiPositionalStats.py:146 +msgid "DEBUG: activesite set to %s" +msgstr "" + +#: GuiPositionalStats.py:332 +msgid "Positional Stats page displayed in %4.2f seconds" +msgstr "" + +#: GuiPrefs.py:81 +msgid "Setting" +msgstr "" + +#: GuiPrefs.py:87 +msgid "Value (double-click to change)" +msgstr "" + +#: GuiPrefs.py:187 +msgid "Test Preferences Dialog" +msgstr "" + +#: GuiPrefs.py:192 fpdb.pyw:296 +msgid "Preferences" +msgstr "" + +#: GuiRingPlayerStats.py:322 GuiSessionViewer.py:248 +#: GuiTourneyPlayerStats.py:252 +msgid "Stats page displayed in %4.2f seconds" +msgstr "" + +#: GuiRingPlayerStats.py:369 +msgid "***sortnums error: " +msgstr "" + +#: GuiRingPlayerStats.py:391 +msgid "***sortcols error: " +msgstr "" + +#: GuiRingPlayerStats.py:682 +msgid "Detailed Filters" +msgstr "" + +#: GuiRingPlayerStats.py:691 +msgid "Hand Filters:" +msgstr "" + +#: GuiRingPlayerStats.py:704 +msgid "between" +msgstr "" + +#: GuiRingPlayerStats.py:705 +msgid "and" +msgstr "" + +#: GuiSessionViewer.py:41 +msgid "Failed to load numpy and/or matplotlib in Session Viewer" +msgstr "" + +#: GuiSessionViewer.py:42 +msgid "ImportError: %s" +msgstr "" + +#: GuiSessionViewer.py:89 +msgid "Hand Breakdown for all levels listed above" +msgstr "" + +#: GuiSessionViewer.py:375 +msgid "Session candlestick graph" +msgstr "" + +#: GuiSessionViewer.py:378 +msgid "Sessions" +msgstr "" + +#: GuiTourneyPlayerStats.py:84 +msgid "_Refresh Stats" +msgstr "" + +#: GuiTourneyViewer.py:49 +msgid "Enter the tourney number you want to display:" +msgstr "" + +#: GuiTourneyViewer.py:55 +msgid "_Display" +msgstr "" + +#: GuiTourneyViewer.py:62 +msgid "Display _Player" +msgstr "" + +#: GuiTourneyViewer.py:77 +msgid "Tournament not found - please ensure you imported it and selected the correct site" +msgstr "" + +#: GuiTourneyViewer.py:105 +msgid "Player or tourney not found - please ensure you imported it and selected the correct site" +msgstr "" + +#: GuiTourneyViewer.py:119 +msgid "N/A" +msgstr "" + +#: GuiTourneyViewer.py:140 +msgid "invalid entry in tourney number - must enter numbers only" +msgstr "" + +#: HUD_main.pyw:86 +msgid "" +"\n" +"HUD_main: starting ..." +msgstr "" + +#: HUD_main.pyw:89 +msgid "Logfile is " +msgstr "" + +#: HUD_main.pyw:90 +msgid "HUD_main starting: using db name = %s" +msgstr "" + +#: HUD_main.pyw:95 +msgid "" +"Note: error output is being diverted to:\n" +msgstr "" + +#: HUD_main.pyw:96 fpdb.pyw:1139 +msgid "" +"\n" +"Any major error will be reported there _only_.\n" +msgstr "" + +#: HUD_main.pyw:97 +msgid "Note: error output is being diverted to:" +msgstr "" + +#: HUD_main.pyw:98 +msgid "Any major error will be reported there _only_." +msgstr "" + +#: HUD_main.pyw:101 +msgid "" +"HUD_main: starting ...\n" +msgstr "" + +#: HUD_main.pyw:114 HUD_run_me.py:62 +msgid "Closing this window will exit from the HUD." +msgstr "" + +#: HUD_main.pyw:117 HUD_run_me.py:66 +msgid "HUD Main Window" +msgstr "" + +#: HUD_main.pyw:126 +msgid "Terminating normally." +msgstr "" + +#: HUD_main.pyw:230 +msgid "Received hand no %s" +msgstr "" + +#: HUD_main.pyw:249 +msgid "HUD_main.read_stdin: hand processing starting ..." +msgstr "" + +#: HUD_main.pyw:275 +msgid "" +"hud_dict[%s] was not found\n" +msgstr "" + +#: HUD_main.pyw:276 +msgid "" +"will not send hand\n" +msgstr "" + +#: HUD_main.pyw:310 +msgid "HUD create: table name %s not found, skipping." +msgstr "" + +#: HUD_main.pyw:318 +msgid "" +"Table \"%s\" no longer exists\n" +msgstr "" + +#: HUD_main.pyw:321 +msgid "HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)" +msgstr "" + +#: HUD_run_me.py:45 +msgid "" +"HUD_main starting\n" +msgstr "" + +#: HUD_run_me.py:51 TournamentTracker.py:317 +msgid "" +"Using db name = %s\n" +msgstr "" + +#: Hand.py:150 +msgid "BB" +msgstr "" + +#: Hand.py:151 +msgid "SB" +msgstr "" + +#: Hand.py:152 +msgid "BUTTONPOS" +msgstr "" + +#: Hand.py:153 +msgid "HAND NO." +msgstr "" + +#: Hand.py:154 TourneySummary.py:134 +msgid "SITE" +msgstr "" + +#: Hand.py:155 +msgid "TABLE NAME" +msgstr "" + +#: Hand.py:156 TourneySummary.py:144 +msgid "HERO" +msgstr "" + +#: Hand.py:157 TourneySummary.py:145 +msgid "MAXSEATS" +msgstr "" + +#: Hand.py:158 +msgid "LEVEL" +msgstr "" + +#: Hand.py:159 TourneySummary.py:150 +msgid "MIXED" +msgstr "" + +#: Hand.py:160 +msgid "LASTBET" +msgstr "" + +#: Hand.py:161 +msgid "ACTION STREETS" +msgstr "" + +#: Hand.py:162 +msgid "STREETS" +msgstr "" + +#: Hand.py:163 +msgid "ALL STREETS" +msgstr "" + +#: Hand.py:164 +msgid "COMMUNITY STREETS" +msgstr "" + +#: Hand.py:165 +msgid "HOLE STREETS" +msgstr "" + +#: Hand.py:166 +msgid "COUNTED SEATS" +msgstr "" + +#: Hand.py:167 +msgid "DEALT" +msgstr "" + +#: Hand.py:168 +msgid "SHOWN" +msgstr "" + +#: Hand.py:169 +msgid "MUCKED" +msgstr "" + +#: Hand.py:170 +msgid "TOTAL POT" +msgstr "" + +#: Hand.py:171 +msgid "TOTAL COLLECTED" +msgstr "" + +#: Hand.py:172 +msgid "RAKE" +msgstr "" + +#: Hand.py:173 TourneySummary.py:135 +msgid "START TIME" +msgstr "" + +#: Hand.py:174 +msgid "TOURNAMENT NO" +msgstr "" + +#: Hand.py:175 TourneySummary.py:140 +msgid "TOURNEY ID" +msgstr "" + +#: Hand.py:176 TourneySummary.py:139 +msgid "TOURNEY TYPE ID" +msgstr "" + +#: Hand.py:177 TourneySummary.py:141 +msgid "BUYIN" +msgstr "" + +#: Hand.py:178 +msgid "BUYIN CURRENCY" +msgstr "" + +#: Hand.py:179 +msgid "BUYIN CHIPS" +msgstr "" + +#: Hand.py:180 TourneySummary.py:142 +msgid "FEE" +msgstr "" + +#: Hand.py:181 +msgid "IS REBUY" +msgstr "" + +#: Hand.py:182 +msgid "IS ADDON" +msgstr "" + +#: Hand.py:183 +msgid "IS KO" +msgstr "" + +#: Hand.py:184 TourneySummary.py:166 +msgid "KO BOUNTY" +msgstr "" + +#: Hand.py:185 +msgid "IS MATRIX" +msgstr "" + +#: Hand.py:186 +msgid "IS SHOOTOUT" +msgstr "" + +#: Hand.py:187 TourneySummary.py:167 +msgid "TOURNEY COMMENT" +msgstr "" + +#: Hand.py:190 TourneySummary.py:179 +msgid "PLAYERS" +msgstr "" + +#: Hand.py:191 +msgid "STACKS" +msgstr "" + +#: Hand.py:192 +msgid "POSTED" +msgstr "" + +#: Hand.py:193 +msgid "POT" +msgstr "" + +#: Hand.py:194 +msgid "SEATING" +msgstr "" + +#: Hand.py:195 +msgid "GAMETYPE" +msgstr "" + +#: Hand.py:196 +msgid "ACTION" +msgstr "" + +#: Hand.py:197 +msgid "COLLECTEES" +msgstr "" + +#: Hand.py:198 +msgid "BETS" +msgstr "" + +#: Hand.py:199 +msgid "BOARD" +msgstr "" + +#: Hand.py:200 +msgid "DISCARDS" +msgstr "" + +#: Hand.py:201 +msgid "HOLECARDS" +msgstr "" + +#: Hand.py:202 +msgid "TOURNEYS PLAYER IDS" +msgstr "" + +#: Hand.py:225 Hand.py:1242 +msgid "[ERROR] Tried to add holecards for unknown player: %s" +msgstr "" + +#: Hand.py:278 +msgid "Hand.insert(): hid #: %s is a duplicate" +msgstr "" + +#: Hand.py:317 +msgid "markstreets didn't match - Assuming hand cancelled" +msgstr "" + +#: Hand.py:319 +msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" +msgstr "" + +#: Hand.py:323 +msgid "DEBUG: checkPlayerExists %s fail on hand number %s" +msgstr "" + +#: Hand.py:324 +msgid "checkPlayerExists: '%s fail on hand number %s" +msgstr "" + +#: Hand.py:405 +msgid "%s %s calls %s" +msgstr "" + +#: Hand.py:475 +msgid "%s %s raise %s" +msgstr "" + +#: Hand.py:486 +msgid "%s %s bets %s" +msgstr "" + +#: Hand.py:505 +msgid "%s %s folds" +msgstr "" + +#: Hand.py:514 +msgid "%s %s checks" +msgstr "" + +#: Hand.py:534 +msgid "addShownCards %s hole=%s all=%s" +msgstr "" + +#: Hand.py:645 +msgid "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, expecting datetime.date object, received:" +msgstr "" + +#: Hand.py:646 +msgid "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" +msgstr "" + +#: Hand.py:647 +msgid "*** Game String:" +msgstr "" + +#: Hand.py:701 +msgid "*** Parse error reading blinds (check compilePlayerRegexs as a likely culprit)" +msgstr "" + +#: Hand.py:728 +msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" +msgstr "" + +#: Hand.py:730 +msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" +msgstr "" + +#: Hand.py:1111 +msgid "*** DEALING HANDS ***" +msgstr "" + +#: Hand.py:1116 +msgid "Dealt to %s: [%s]" +msgstr "" + +#: Hand.py:1121 +msgid "*** FIRST DRAW ***" +msgstr "" + +#: Hand.py:1131 +msgid "*** SECOND DRAW ***" +msgstr "" + +#: Hand.py:1141 +msgid "*** THIRD DRAW ***" +msgstr "" + +#: Hand.py:1151 Hand.py:1369 +msgid "*** SHOW DOWN ***" +msgstr "" + +#: Hand.py:1166 Hand.py:1384 +msgid "*** SUMMARY ***" +msgstr "" + +#: Hand.py:1251 +msgid "%s %s completes %s" +msgstr "" + +#: Hand.py:1269 +msgid "Bringin: %s, %s" +msgstr "" + +#: Hand.py:1309 +msgid "*** 3RD STREET ***" +msgstr "" + +#: Hand.py:1323 +msgid "*** 4TH STREET ***" +msgstr "" + +#: Hand.py:1335 +msgid "*** 5TH STREET ***" +msgstr "" + +#: Hand.py:1347 +msgid "*** 6TH STREET ***" +msgstr "" + +#: Hand.py:1357 +msgid "*** RIVER ***" +msgstr "" + +#: Hand.py:1449 +msgid "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should be impossible for anyone who is not a hero" +msgstr "" + +#: Hand.py:1450 +msgid "join_holcards: holecards(%s): %s" +msgstr "" + +#: Hand.py:1533 +msgid "DEBUG: call Pot.end() before printing pot total" +msgstr "" + +#: Hand.py:1535 +msgid "FpdbError in printing Hand object" +msgstr "" + +#: HandHistoryConverter.py:135 +msgid "Failed sanity check" +msgstr "" + +#: HandHistoryConverter.py:143 +msgid "Tailing '%s'" +msgstr "" + +#: HandHistoryConverter.py:150 +msgid "HHC.start(follow): processHand failed: Exception msg: '%s'" +msgstr "" + +#: HandHistoryConverter.py:154 +msgid "handsList is " +msgstr "" + +#: HandHistoryConverter.py:165 +msgid "HHC.start(): processHand failed: Exception msg: '%s'" +msgstr "" + +#: HandHistoryConverter.py:169 +msgid "Read %d hands (%d failed) in %.3f seconds" +msgstr "" + +#: HandHistoryConverter.py:175 +msgid "Summary file '%s' correctly parsed (took %.3f seconds)" +msgstr "" + +#: HandHistoryConverter.py:177 +msgid "Error converting summary file '%s' (took %.3f seconds)" +msgstr "" + +#: HandHistoryConverter.py:180 +msgid "Error converting '%s'" +msgstr "" + +#: HandHistoryConverter.py:211 +msgid "%s changed inode numbers from %d to %d" +msgstr "" + +#: HandHistoryConverter.py:256 +msgid "Converting starsArchive format to readable" +msgstr "" + +#: HandHistoryConverter.py:261 +msgid "Converting ftpArchive format to readable" +msgstr "" + +#: HandHistoryConverter.py:266 +msgid "Read no hands." +msgstr "" + +#: HandHistoryConverter.py:474 +msgid "HH Sanity Check: output and input files are the same, check config" +msgstr "" + +#: HandHistoryConverter.py:497 +msgid "Reading stdin with %s" +msgstr "" + +#: HandHistoryConverter.py:512 +msgid "unable to read file with any codec in list!" +msgstr "" + +#: HandHistoryConverter.py:579 +msgid " given TZ:" +msgstr "" + +#: HandHistoryConverter.py:579 +msgid "raw time:" +msgstr "" + +#: HandHistoryConverter.py:589 +msgid "changeTimeZone: offset=" +msgstr "" + +#: HandHistoryConverter.py:652 +msgid "utcTime:" +msgstr "" + +#: HandHistoryConverter.py:685 +msgid "Unable to create output directory %s for HHC!" +msgstr "" + +#: HandHistoryConverter.py:686 +msgid "*** ERROR: UNABLE TO CREATE OUTPUT DIRECTORY" +msgstr "" + +#: HandHistoryConverter.py:688 +msgid "Created directory '%s'" +msgstr "" + +#: HandHistoryConverter.py:692 +msgid "out_path %s couldn't be opened" +msgstr "" + +#: Hello.py:44 +msgid "creating Hello" +msgstr "" + +#: Hello.py:47 +msgid "Hello World" +msgstr "" + +#: Hello.py:65 +msgid "site =" +msgstr "" + +#: Hello.py:73 +msgid "YOUR NAME HERE" +msgstr "" + +#: Hello.py:104 +msgid "" +"Hello %s\n" +"You have played %d hands\n" +" on %s." +msgstr "" + +#: Hud.py:149 +msgid "Kill This HUD" +msgstr "" + +#: Hud.py:154 +msgid "Save HUD Layout" +msgstr "" + +#: Hud.py:158 +msgid "Reposition StatWindows" +msgstr "" + +#: Hud.py:162 +msgid "Show Player Stats" +msgstr "" + +#: Hud.py:167 Hud.py:236 +msgid "For This Blind Level Only" +msgstr "" + +#: Hud.py:172 Hud.py:241 +msgid "For Multiple Blind Levels:" +msgstr "" + +#: Hud.py:175 Hud.py:244 +msgid " 0.5 to 2.0 x Current Blinds" +msgstr "" + +#: Hud.py:180 Hud.py:249 +msgid " 0.33 to 3.0 x Current Blinds" +msgstr "" + +#: Hud.py:185 Hud.py:254 +msgid " 0.1 to 10 x Current Blinds" +msgstr "" + +#: Hud.py:190 Hud.py:259 +msgid " All Levels" +msgstr "" + +#: Hud.py:195 Hud.py:264 +msgid "For #Seats:" +msgstr "" + +#: Hud.py:198 Hud.py:267 +msgid " Any Number" +msgstr "" + +#: Hud.py:203 Hud.py:272 +msgid " Custom" +msgstr "" + +#: Hud.py:208 Hud.py:277 +msgid " Exact" +msgstr "" + +#: Hud.py:213 Hud.py:282 +msgid "Since:" +msgstr "" + +#: Hud.py:216 Hud.py:285 +msgid " All Time" +msgstr "" + +#: Hud.py:221 Hud.py:290 +msgid " Session" +msgstr "" + +#: Hud.py:226 Hud.py:295 +msgid " %s Days" +msgstr "" + +#: Hud.py:231 +msgid "Show Opponent Stats" +msgstr "" + +#: Hud.py:353 +msgid "Debug StatWindows" +msgstr "" + +#: Hud.py:357 +msgid "Set max seats" +msgstr "" + +#: Hud.py:543 +msgid "Updating config file" +msgstr "" + +#: Hud.py:552 +msgid "" +"No layout found for %d-max games for site %s\n" +msgstr "" + +#: Hud.py:566 +msgid "" +"exception in Hud.adj_seats\n" +"\n" +msgstr "" + +#: Hud.py:567 +msgid "error is %s" +msgstr "" + +#: Hud.py:574 +msgid "" +"Error finding actual seat.\n" +msgstr "" + +#: Hud.py:590 +msgid "" +"------------------------------------------------------------\n" +"Creating hud from hand %s\n" +msgstr "" + +#: Hud.py:639 +msgid "KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric" +msgstr "" + +#: Hud.py:640 +msgid "(btw, the key was %s and statd is %s" +msgstr "" + +#: Hud.py:947 +msgid "" +"Fake main window, blah blah, blah\n" +"blah, blah" +msgstr "" + +#: Hud.py:955 +msgid "Table not found." +msgstr "" + +#: ImapFetcher.py:54 +msgid "response to logging in:" +msgstr "" + +#: ImapFetcher.py:85 +msgid "completed running Imap import, closing server connection" +msgstr "" + +#: Mucked.py:327 +msgid "No Name" +msgstr "" + +#: OnGameToFpdb.py:153 PokerStarsToFpdb.py:189 +msgid "determineGameType: Unable to recognise gametype from: '%s'" +msgstr "" + +#: OnGameToFpdb.py:154 PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 +msgid "determineGameType: Raising FpdbParseError" +msgstr "" + +#: OnGameToFpdb.py:155 PokerStarsToFpdb.py:191 +msgid "Unable to recognise gametype from: '%s'" +msgstr "" + +#: OnGameToFpdb.py:235 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +msgid "readButton: not found" +msgstr "" + +#: OnGameToFpdb.py:250 +msgid "readBlinds starting" +msgstr "" + +#: OnGameToFpdb.py:254 +msgid "re_postSB failed, hand=" +msgstr "" + +#: OnGameToFpdb.py:257 +msgid "readBlinds in noSB exception" +msgstr "" + +#: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 +msgid "reading antes" +msgstr "" + +#: Options.py:40 +msgid "If passed error output will go to the console rather than ." +msgstr "" + +#: Options.py:43 +msgid "Overrides the default database name" +msgstr "" + +#: Options.py:46 +msgid "Specifies a configuration file." +msgstr "" + +#: Options.py:49 +msgid "Indicates program was restarted with a different path (only allowed once)." +msgstr "" + +#: Options.py:52 +msgid "Input file" +msgstr "" + +#: Options.py:55 +msgid "Module name for Hand History Converter" +msgstr "" + +#: Options.py:59 +msgid "Error logging level:" +msgstr "" + +#: Options.py:62 +msgid "Print version information and exit." +msgstr "" + +#: Options.py:73 +msgid "press enter to end" +msgstr "" + +#: P5sResultsParser.py:10 +msgid "You need to manually enter the playername" +msgstr "" + +#: PartyPokerToFpdb.py:215 +msgid "Cannot fetch field '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:219 +msgid "Unknown limit '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:224 +msgid "Unknown game type '%s'" +msgstr "" + +#: PartyPokerToFpdb.py:258 +msgid "Cannot read HID for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:263 +msgid "Cannot read Handinfo for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:268 +msgid "Cannot read GameType for current hand" +msgstr "" + +#: PartyPokerToFpdb.py:479 +msgid "Unimplemented readAction: '%s' '%s'" +msgstr "" + +#: PokerStarsSummary.py:72 +msgid "didn't recognise buyin currency in:" +msgstr "" + +#: PokerStarsSummary.py:112 +msgid "in not result starttime" +msgstr "" + +#: PokerStarsToFpdb.py:221 +msgid "Lim_Blinds has no lookup for '%s'" +msgstr "" + +#: PokerStarsToFpdb.py:273 +msgid "failed to detect currency" +msgstr "" + +#: Stats.py:103 +msgid "exception getting stat %s for player %s %s" +msgstr "" + +#: Stats.py:104 +msgid "Stats.do_stat result = %s" +msgstr "" + +#: Stats.py:113 +msgid "error: %s" +msgstr "" + +#: Stats.py:132 Stats.py:133 +msgid "Total Profit" +msgstr "" + +#: Stats.py:154 Stats.py:161 +msgid "Voluntarily Put In Pot Pre-Flop%" +msgstr "" + +#: Stats.py:174 Stats.py:182 +msgid "Pre-Flop Raise %" +msgstr "" + +#: Stats.py:195 Stats.py:203 +msgid "% went to showdown" +msgstr "" + +#: Stats.py:216 Stats.py:224 +msgid "% won money at showdown" +msgstr "" + +#: Stats.py:237 Stats.py:246 +msgid "profit/100hands" +msgstr "" + +#: Stats.py:240 +msgid "exception calcing p/100: 100 * %d / %d" +msgstr "" + +#: Stats.py:259 Stats.py:268 +msgid "big blinds/100 hands" +msgstr "" + +#: Stats.py:281 Stats.py:290 +msgid "Big Bets/100 hands" +msgstr "" + +#: Stats.py:284 +msgid "exception calcing BB/100: " +msgstr "" + +#: Stats.py:304 Stats.py:315 +msgid "Flop Seen %" +msgstr "" + +#: Stats.py:338 Stats.py:346 +msgid "number hands seen" +msgstr "" + +#: Stats.py:359 Stats.py:367 +msgid "folded flop/4th" +msgstr "" + +#: Stats.py:380 +msgid "% steal attempted" +msgstr "" + +#: Stats.py:395 Stats.py:402 +msgid "% folded SB to steal" +msgstr "" + +#: Stats.py:414 Stats.py:421 +msgid "% folded BB to steal" +msgstr "" + +#: Stats.py:436 Stats.py:443 +msgid "% folded blind to steal" +msgstr "" + +#: Stats.py:455 Stats.py:462 +msgid "% 3/4 Bet preflop/3rd" +msgstr "" + +#: Stats.py:474 Stats.py:481 +msgid "% won$/saw flop/4th" +msgstr "" + +#: Stats.py:493 Stats.py:500 +msgid "Aggression Freq flop/4th" +msgstr "" + +#: Stats.py:512 Stats.py:519 +msgid "Aggression Freq turn/5th" +msgstr "" + +#: Stats.py:531 Stats.py:538 +msgid "Aggression Freq river/6th" +msgstr "" + +#: Stats.py:550 Stats.py:557 +msgid "Aggression Freq 7th" +msgstr "" + +#: Stats.py:576 Stats.py:583 +msgid "Post-Flop Aggression Freq" +msgstr "" + +#: Stats.py:604 Stats.py:611 +msgid "Aggression Freq" +msgstr "" + +#: Stats.py:630 Stats.py:637 +msgid "Aggression Factor" +msgstr "" + +#: Stats.py:654 Stats.py:661 +msgid "% continuation bet " +msgstr "" + +#: Stats.py:673 Stats.py:680 +msgid "% continuation bet flop/4th" +msgstr "" + +#: Stats.py:692 Stats.py:699 +msgid "% continuation bet turn/5th" +msgstr "" + +#: Stats.py:711 Stats.py:718 +msgid "% continuation bet river/6th" +msgstr "" + +#: Stats.py:730 Stats.py:737 +msgid "% continuation bet 7th" +msgstr "" + +#: Stats.py:749 Stats.py:756 +msgid "% fold frequency flop/4th" +msgstr "" + +#: Stats.py:768 Stats.py:775 +msgid "% fold frequency turn/5th" +msgstr "" + +#: Stats.py:787 Stats.py:794 +msgid "% fold frequency river/6th" +msgstr "" + +#: Stats.py:806 Stats.py:813 +msgid "% fold frequency 7th" +msgstr "" + +#: Stats.py:833 +msgid "Example stats, player = %s hand = %s:" +msgstr "" + +#: Stats.py:866 +msgid "" +"\n" +"\n" +"Legal stats:" +msgstr "" + +#: Stats.py:867 +msgid "" +"(add _0 to name to display with 0 decimal places, _1 to display with 1, etc)\n" +msgstr "" + +#: Tables.py:234 +msgid "Found unknown table = %s" +msgstr "" + +#: Tables.py:261 +msgid "attach to window" +msgstr "" + +#: Tables_Demo.py:72 +msgid "Fake HUD Main Window" +msgstr "" + +#: Tables_Demo.py:95 +msgid "enter table name to find: " +msgstr "" + +#: Tables_Demo.py:120 +msgid "calling main" +msgstr "" + +#: TournamentTracker.py:50 +msgid "Note: error output is being diverted to fpdb-error-log.txt and HUD-error.txt. Any major error will be reported there _only_." +msgstr "" + +#: TournamentTracker.py:111 +msgid "tournament edit window=" +msgstr "" + +#: TournamentTracker.py:114 +msgid "FPDB Tournament Entry" +msgstr "" + +#: TournamentTracker.py:154 +msgid "Closing this window will stop the Tournament Tracker" +msgstr "" + +#: TournamentTracker.py:156 +msgid "Enter Tournament" +msgstr "" + +#: TournamentTracker.py:161 +msgid "FPDB Tournament Tracker" +msgstr "" + +#: TournamentTracker.py:172 +msgid "Edit" +msgstr "" + +#: TournamentTracker.py:175 +msgid "Rebuy" +msgstr "" + +#: TournamentTracker.py:274 +msgid "db error: skipping " +msgstr "" + +#: TournamentTracker.py:276 +msgid "" +"Database error %s in hand %d. Skipping.\n" +msgstr "" + +#: TournamentTracker.py:285 +msgid "could not find tournament: skipping" +msgstr "" + +#: TournamentTracker.py:286 +msgid "" +"Could not find tournament %d in hand %d. Skipping.\n" +msgstr "" + +#: TournamentTracker.py:309 +msgid "" +"table name %s not found, skipping.\n" +msgstr "" + +#: TournamentTracker.py:316 +msgid "" +"tournament tracker starting\n" +msgstr "" + +#: TourneyFilters.py:61 +msgid "Tourney Type" +msgstr "" + +#: TourneyFilters.py:88 +msgid "setting numTourneys:" +msgstr "" + +#: TourneySummary.py:136 +msgid "END TIME" +msgstr "" + +#: TourneySummary.py:137 +msgid "TOURNEY NAME" +msgstr "" + +#: TourneySummary.py:138 +msgid "TOURNEY NO" +msgstr "" + +#: TourneySummary.py:143 +msgid "CURRENCY" +msgstr "" + +#: TourneySummary.py:146 +msgid "ENTRIES" +msgstr "" + +#: TourneySummary.py:147 +msgid "SPEED" +msgstr "" + +#: TourneySummary.py:148 +msgid "PRIZE POOL" +msgstr "" + +#: TourneySummary.py:149 +msgid "STARTING CHIP COUNT" +msgstr "" + +#: TourneySummary.py:151 +msgid "REBUY" +msgstr "" + +#: TourneySummary.py:152 +msgid "ADDON" +msgstr "" + +#: TourneySummary.py:153 +msgid "KO" +msgstr "" + +#: TourneySummary.py:154 +msgid "MATRIX" +msgstr "" + +#: TourneySummary.py:155 +msgid "MATRIX ID PROCESSED" +msgstr "" + +#: TourneySummary.py:156 +msgid "SHOOTOUT" +msgstr "" + +#: TourneySummary.py:157 +msgid "MATRIX MATCH ID" +msgstr "" + +#: TourneySummary.py:158 +msgid "SUB TOURNEY BUY IN" +msgstr "" + +#: TourneySummary.py:159 +msgid "SUB TOURNEY FEE" +msgstr "" + +#: TourneySummary.py:160 +msgid "REBUY CHIPS" +msgstr "" + +#: TourneySummary.py:161 +msgid "ADDON CHIPS" +msgstr "" + +#: TourneySummary.py:162 +msgid "REBUY COST" +msgstr "" + +#: TourneySummary.py:163 +msgid "ADDON COST" +msgstr "" + +#: TourneySummary.py:164 +msgid "TOTAL REBUYS" +msgstr "" + +#: TourneySummary.py:165 +msgid "TOTAL ADDONS" +msgstr "" + +#: TourneySummary.py:168 +msgid "SNG" +msgstr "" + +#: TourneySummary.py:169 +msgid "SATELLITE" +msgstr "" + +#: TourneySummary.py:170 +msgid "DOUBLE OR NOTHING" +msgstr "" + +#: TourneySummary.py:171 +msgid "GUARANTEE" +msgstr "" + +#: TourneySummary.py:172 +msgid "ADDED" +msgstr "" + +#: TourneySummary.py:173 +msgid "ADDED CURRENCY" +msgstr "" + +#: TourneySummary.py:174 +msgid "COMMENT" +msgstr "" + +#: TourneySummary.py:175 +msgid "COMMENT TIMESTAMP" +msgstr "" + +#: TourneySummary.py:178 +msgid "PLAYER IDS" +msgstr "" + +#: TourneySummary.py:180 +msgid "TOURNEYS PLAYERS IDS" +msgstr "" + +#: TourneySummary.py:181 +msgid "RANKS" +msgstr "" + +#: TourneySummary.py:182 +msgid "WINNINGS" +msgstr "" + +#: TourneySummary.py:183 +msgid "WINNINGS CURRENCY" +msgstr "" + +#: TourneySummary.py:184 +msgid "COUNT REBUYS" +msgstr "" + +#: TourneySummary.py:185 +msgid "COUNT ADDONS" +msgstr "" + +#: TourneySummary.py:186 +msgid "NB OF KO" +msgstr "" + +#: TourneySummary.py:233 +msgid "Tourney Insert/Update done" +msgstr "" + +#: TourneySummary.py:253 +msgid "addPlayer: rank:%s - name : '%s' - Winnings (%s)" +msgstr "" + +#: TourneySummary.py:280 +msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" +msgstr "" + +#: WinTables.py:82 +msgid "Window %s not found. Skipping." +msgstr "" + +#: WinTables.py:85 +msgid "self.window doesn't exist? why?" +msgstr "" + +#: fpdb.pyw:48 +msgid "" +" - press return to continue\n" +msgstr "" + +#: fpdb.pyw:55 +msgid "" +"\n" +"python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" +msgstr "" + +#: fpdb.pyw:56 fpdb.pyw:68 fpdb.pyw:90 +msgid "Press ENTER to continue." +msgstr "" + +#: fpdb.pyw:67 +msgid "We appear to be running in Windows, but the Windows Python Extensions are not loading. Please install the PYWIN32 package from http://sourceforge.net/projects/pywin32/" +msgstr "" + +#: fpdb.pyw:89 +msgid "Unable to load PYGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org." +msgstr "" + +#: fpdb.pyw:247 +msgid "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, sqlcoder, Bostik, and others" +msgstr "" + +#: fpdb.pyw:248 +msgid "You are free to change, and distribute original or changed versions of fpdb within the rules set out by the license" +msgstr "" + +#: fpdb.pyw:249 +msgid "Please see fpdb's start screen for license information" +msgstr "" + +#: fpdb.pyw:253 +msgid "and others" +msgstr "" + +#: fpdb.pyw:259 +msgid "Operating System" +msgstr "" + +#: fpdb.pyw:279 +msgid "Your config file is: " +msgstr "" + +#: fpdb.pyw:284 +msgid "Version Information:" +msgstr "" + +#: fpdb.pyw:291 +msgid "Threads: " +msgstr "" + +#: fpdb.pyw:314 +msgid "Updated preferences have not been loaded because windows are open. Re-start fpdb to load them." +msgstr "" + +#: fpdb.pyw:324 +msgid "Maintain Databases" +msgstr "" + +#: fpdb.pyw:334 +msgid "saving updated db data" +msgstr "" + +#: fpdb.pyw:341 +msgid "guidb response was " +msgstr "" + +#: fpdb.pyw:347 +msgid "Cannot open Database Maintenance window because other windows have been opened. Re-start fpdb to use this option." +msgstr "" + +#: fpdb.pyw:350 +msgid "Number of Hands: " +msgstr "" + +#: fpdb.pyw:351 +msgid "" +"\n" +"Number of Tourneys: " +msgstr "" + +#: fpdb.pyw:352 +msgid "" +"\n" +"Number of TourneyTypes: " +msgstr "" + +#: fpdb.pyw:353 +msgid "Database Statistics" +msgstr "" + +#: fpdb.pyw:362 +msgid "HUD Configurator - choose category" +msgstr "" + +#: fpdb.pyw:368 +msgid "Please select the game category for which you want to configure HUD stats:" +msgstr "" + +#: fpdb.pyw:420 +msgid "HUD Configurator - please choose your stats" +msgstr "" + +#: fpdb.pyw:426 +msgid "Please choose the stats you wish to use in the below table." +msgstr "" + +#: fpdb.pyw:430 +msgid "Note that you may not select any stat more than once or it will crash." +msgstr "" + +#: fpdb.pyw:434 +msgid "It is not currently possible to select \"empty\" or anything else to that end." +msgstr "" + +#: fpdb.pyw:438 +msgid "To configure things like colouring you will still have to manually edit your HUD_config.xml." +msgstr "" + +#: fpdb.pyw:545 +msgid "Confirm deleting and recreating tables" +msgstr "" + +#: fpdb.pyw:546 +msgid "Please confirm that you want to (re-)create the tables. If there already are tables in the database " +msgstr "" + +#: fpdb.pyw:547 +msgid "" +" they will be deleted.\n" +"This may take a while." +msgstr "" + +#: fpdb.pyw:572 +msgid "User cancelled recreating tables" +msgstr "" + +#: fpdb.pyw:579 +msgid "Please confirm that you want to re-create the HUD cache." +msgstr "" + +#: fpdb.pyw:587 +msgid " Hero's cache starts: " +msgstr "" + +#: fpdb.pyw:601 +msgid " Villains' cache starts: " +msgstr "" + +#: fpdb.pyw:614 +msgid " Rebuilding HUD Cache ... " +msgstr "" + +#: fpdb.pyw:622 +msgid "User cancelled rebuilding hud cache" +msgstr "" + +#: fpdb.pyw:634 +msgid "Confirm rebuilding database indexes" +msgstr "" + +#: fpdb.pyw:635 +msgid "Please confirm that you want to rebuild the database indexes." +msgstr "" + +#: fpdb.pyw:643 +msgid " Rebuilding Indexes ... " +msgstr "" + +#: fpdb.pyw:650 +msgid " Cleaning Database ... " +msgstr "" + +#: fpdb.pyw:655 +msgid " Analyzing Database ... " +msgstr "" + +#: fpdb.pyw:660 +msgid "User cancelled rebuilding db indexes" +msgstr "" + +#: fpdb.pyw:755 +msgid "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" +msgstr "" + +#: fpdb.pyw:758 +msgid "Fatal Error - Config File Missing" +msgstr "" + +#: fpdb.pyw:760 +msgid "Please copy the config file from the docs folder to:" +msgstr "" + +#: fpdb.pyw:768 +msgid "and edit it according to the install documentation at http://fpdb.sourceforge.net" +msgstr "" + +#: fpdb.pyw:825 +msgid "_Main" +msgstr "" + +#: fpdb.pyw:826 fpdb.pyw:854 +msgid "_Quit" +msgstr "" + +#: fpdb.pyw:827 +msgid "L" +msgstr "" + +#: fpdb.pyw:827 +msgid "_Load Profile (broken)" +msgstr "" + +#: fpdb.pyw:828 +msgid "S" +msgstr "" + +#: fpdb.pyw:828 +msgid "_Save Profile (todo)" +msgstr "" + +#: fpdb.pyw:829 +msgid "F" +msgstr "" + +#: fpdb.pyw:829 +msgid "Pre_ferences" +msgstr "" + +#: fpdb.pyw:830 +msgid "_Import" +msgstr "" + +#: fpdb.pyw:831 +msgid "_Set HandHistory Archive Directory" +msgstr "" + +#: fpdb.pyw:832 +msgid "B" +msgstr "" + +#: fpdb.pyw:833 +msgid "I" +msgstr "" + +#: fpdb.pyw:833 +msgid "_Import through eMail/IMAP" +msgstr "" + +#: fpdb.pyw:834 +msgid "_Viewers" +msgstr "" + +#: fpdb.pyw:835 +msgid "A" +msgstr "" + +#: fpdb.pyw:835 +msgid "_Auto Import and HUD" +msgstr "" + +#: fpdb.pyw:836 +msgid "H" +msgstr "" + +#: fpdb.pyw:836 +msgid "_HUD Configurator" +msgstr "" + +#: fpdb.pyw:837 +msgid "G" +msgstr "" + +#: fpdb.pyw:837 +msgid "_Graphs" +msgstr "" + +#: fpdb.pyw:838 +msgid "P" +msgstr "" + +#: fpdb.pyw:838 +msgid "Ring _Player Stats (tabulated view, not on pgsql)" +msgstr "" + +#: fpdb.pyw:839 +msgid "T" +msgstr "" + +#: fpdb.pyw:839 +msgid "_Tourney Player Stats (tabulated view, not on pgsql)" +msgstr "" + +#: fpdb.pyw:840 +msgid "Tourney _Viewer" +msgstr "" + +#: fpdb.pyw:841 +msgid "O" +msgstr "" + +#: fpdb.pyw:841 +msgid "P_ositional Stats (tabulated view, not on sqlite)" +msgstr "" + +#: fpdb.pyw:842 fpdb.pyw:1058 +msgid "Session Stats" +msgstr "" + +#: fpdb.pyw:843 +msgid "_Database" +msgstr "" + +#: fpdb.pyw:844 +msgid "_Maintain Databases" +msgstr "" + +#: fpdb.pyw:845 +msgid "Create or Recreate _Tables" +msgstr "" + +#: fpdb.pyw:846 +msgid "Rebuild HUD Cache" +msgstr "" + +#: fpdb.pyw:847 +msgid "Rebuild DB Indexes" +msgstr "" + +#: fpdb.pyw:848 +msgid "_Statistics" +msgstr "" + +#: fpdb.pyw:849 +msgid "Dump Database to Textfile (takes ALOT of time)" +msgstr "" + +#: fpdb.pyw:850 +msgid "_Help" +msgstr "" + +#: fpdb.pyw:851 +msgid "_Log Messages" +msgstr "" + +#: fpdb.pyw:852 +msgid "A_bout, License, Copying" +msgstr "" + +#: fpdb.pyw:870 +msgid "" +"There is an error in your config file\n" +msgstr "" + +#: fpdb.pyw:871 +msgid "" +"\n" +"\n" +"Error is: " +msgstr "" + +#: fpdb.pyw:872 +msgid "CONFIG FILE ERROR" +msgstr "" + +#: fpdb.pyw:876 +msgid "" +"Logfile is %s\n" +msgstr "" + +#: fpdb.pyw:878 +msgid "Config file" +msgstr "" + +#: fpdb.pyw:879 +msgid "" +"has been created at:\n" +"%s.\n" +msgstr "" + +#: fpdb.pyw:880 +msgid "Edit your screen_name and hand history path in the supported_sites " +msgstr "" + +#: fpdb.pyw:881 +msgid "section of the Preferences window (Main menu) before trying to import hands." +msgstr "" + +#: fpdb.pyw:903 +msgid "Connected to SQLite: %s" +msgstr "" + +#: fpdb.pyw:907 +msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " +msgstr "" + +#: fpdb.pyw:908 +msgid "Please check that the MySQL service has been started" +msgstr "" + +#: fpdb.pyw:912 +msgid "Postgres client reports: Unable to connect - " +msgstr "" + +#: fpdb.pyw:913 +msgid "Please check that the Postgres service has been started" +msgstr "" + +#: fpdb.pyw:937 +msgid "Strong Warning - Invalid database version" +msgstr "" + +#: fpdb.pyw:939 +msgid "An invalid DB version or missing tables have been detected." +msgstr "" + +#: fpdb.pyw:943 +msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu." +msgstr "" + +#: fpdb.pyw:947 +msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc." +msgstr "" + +#: fpdb.pyw:960 +msgid "Status: Connected to %s database named %s on host %s" +msgstr "" + +#: fpdb.pyw:970 +msgid "" +"\n" +"Global lock taken by" +msgstr "" + +#: fpdb.pyw:973 +msgid "" +"\n" +"Failed to get global lock, it is currently held by" +msgstr "" + +#: fpdb.pyw:983 +msgid "Quitting normally" +msgstr "" + +#: fpdb.pyw:1007 +msgid "" +"Global lock released.\n" +msgstr "" + +#: fpdb.pyw:1014 +msgid "Auto Import" +msgstr "" + +#: fpdb.pyw:1021 +msgid "Bulk Import" +msgstr "" + +#: fpdb.pyw:1027 +msgid "eMail Import" +msgstr "" + +#: fpdb.pyw:1034 +msgid "Ring Player Stats" +msgstr "" + +#: fpdb.pyw:1040 +msgid "Tourney Player Stats" +msgstr "" + +#: fpdb.pyw:1046 +msgid "Tourney Viewer" +msgstr "" + +#: fpdb.pyw:1052 +msgid "Positional Stats" +msgstr "" + +#: fpdb.pyw:1062 +msgid "" +"Fpdb needs translators!\n" +"If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n" +"\n" +"Welcome to Fpdb!\n" +"To be notified of new snapshots and releases go to https://lists.sourceforge.net/lists/listinfo/fpdb-announce and subscribe.\n" +"If you want to follow development more closely go to https://lists.sourceforge.net/lists/listinfo/fpdb-main and subscribe.\n" +"\n" +"This program is currently in an alpha-state, so our database format is still sometimes changed.\n" +"You should therefore always keep your hand history files so that you can re-import after an update, if necessary.\n" +"\n" +"For documentation please visit our website/wiki at http://fpdb.sourceforge.net/.\n" +"If you need help click on Contact - Get Help on our website.\n" +"Please note that default.conf is no longer needed nor used, all configuration now happens in HUD_config.xml.\n" +"\n" +"This program is free/libre open source software licensed partially under the AGPL3, and partially under GPL2 or later.\n" +"The Windows installer package includes code licensed under the MIT license.\n" +"You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory." +msgstr "" + +#: fpdb.pyw:1079 +msgid "Help" +msgstr "" + +#: fpdb.pyw:1086 +msgid "Graphs" +msgstr "" + +#: fpdb.pyw:1138 +msgid "" +"\n" +"Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n" +msgstr "" + +#: fpdb.pyw:1167 +msgid "fpdb starting ..." +msgstr "" + +#: fpdb.pyw:1224 +msgid "FPDB WARNING" +msgstr "" + +#: fpdb.pyw:1243 +msgid "" +"WARNING: Unable to find output hh directory %s\n" +"\n" +" Press YES to create this directory, or NO to select a new one." +msgstr "" + +#: fpdb.pyw:1251 +msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed." +msgstr "" + +#: fpdb.pyw:1256 +msgid "Select HH Output Directory" +msgstr "" + +#: fpdb_import.py:60 +msgid "Import database module: MySQLdb not found" +msgstr "" + +#: fpdb_import.py:67 +msgid "Import database module: psycopg2 not found" +msgstr "" + +#: fpdb_import.py:189 +msgid "Database ID for %s not found" +msgstr "" + +#: fpdb_import.py:191 +msgid "[ERROR] More than 1 Database ID found for %s - Multiple currencies not implemented yet" +msgstr "" + +#: fpdb_import.py:227 +msgid "Attempted to add non-directory: '%s' as an import directory" +msgstr "" + +#: fpdb_import.py:237 +msgid "Started at %s -- %d files to import. indexes: %s" +msgstr "" + +#: fpdb_import.py:246 +msgid "No need to drop indexes." +msgstr "" + +#: fpdb_import.py:265 +msgid "writers finished already" +msgstr "" + +#: fpdb_import.py:268 +msgid "waiting for writers to finish ..." +msgstr "" + +#: fpdb_import.py:278 +msgid " ... writers finished" +msgstr "" + +#: fpdb_import.py:284 +msgid "No need to rebuild indexes." +msgstr "" + +#: fpdb_import.py:288 +msgid "No need to rebuild hudcache." +msgstr "" + +#: fpdb_import.py:313 +msgid "sending finish msg qlen =" +msgstr "" + +#: fpdb_import.py:439 fpdb_import.py:441 +msgid "Converting " +msgstr "" + +#: fpdb_import.py:477 +msgid "Hand processed but empty" +msgstr "" + +#: fpdb_import.py:490 +msgid "fpdb_import: sending hand to hud" +msgstr "" + +#: fpdb_import.py:493 +msgid "Failed to send hand to HUD: %s" +msgstr "" + +#: fpdb_import.py:508 +msgid "Unknown filter filter_name:'%s' in filter:'%s'" +msgstr "" + +#: fpdb_import.py:519 +msgid "Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge.net so we can fix the problem." +msgstr "" + +#: fpdb_import.py:520 +msgid "Filename:" +msgstr "" + +#: fpdb_import.py:521 +msgid "Here is the first line of the hand so you can identify it. Please mention that the error was a ValueError:" +msgstr "" + +#: fpdb_import.py:523 +msgid "Hand logged to hand-errors.txt" +msgstr "" + +#: fpdb_import.py:531 +msgid "CLI for fpdb_import is now available as CliFpdb.py" +msgstr "" + +#: interlocks.py:61 +msgid "lock already held by:" +msgstr "" + +#: test_Database.py:50 +msgid "DEBUG: Testing variance function" +msgstr "" + +#: test_Database.py:51 +msgid "DEBUG: result: %s expecting: 0.666666 (result-expecting ~= 0.0): %s" +msgstr "" + +#: windows_make_bats.py:39 +msgid "" +"\n" +"This script is only for windows\n" +msgstr "" + +#: windows_make_bats.py:66 +msgid "" +"\n" +"no gtk directories found in your path - install gtk or edit the path manually\n" +msgstr "" + diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index def83ac3..d6859904 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -4,14 +4,14 @@ # msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-23 05:27+CEST\n" +"Project-Id-Version: 0.20.905 plus git\n" +"POT-Creation-Date: 2010-08-25 13:31+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Transfer-Encoding: UTF-8\n" "Generated-By: pygettext.py 1.5\n" @@ -23,31 +23,31 @@ msgstr "" msgid "Output being written to" msgstr "" -#: BetfairToFpdb.py:84 +#: BetfairToFpdb.py:83 msgid "GameInfo regex did not match" msgstr "" -#: BetfairToFpdb.py:115 +#: BetfairToFpdb.py:114 msgid "Didn't match re_HandInfo" msgstr "" -#: BetfairToFpdb.py:171 +#: BetfairToFpdb.py:170 msgid "No bringin found" msgstr "" -#: BetfairToFpdb.py:207 OnGameToFpdb.py:328 PokerStarsToFpdb.py:440 +#: BetfairToFpdb.py:206 OnGameToFpdb.py:308 PokerStarsToFpdb.py:440 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "" -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 +#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 msgid "parse input hand history" msgstr "" -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 msgid "output translation to" msgstr "" -#: BetfairToFpdb.py:232 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 msgid "follow (tail -f) the input" msgstr "" @@ -709,7 +709,7 @@ msgstr "" msgid "auto" msgstr "" -#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:399 +#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:398 msgid "don't drop" msgstr "" @@ -793,11 +793,11 @@ msgstr "" msgid "PartyPoker converter: ./GuiBulkImport.py -c PartyPoker -f filename" msgstr "" -#: GuiBulkImport.py:386 +#: GuiBulkImport.py:385 msgid "-q is deprecated. Just use \"-f filename\" instead" msgstr "" -#: GuiBulkImport.py:410 +#: GuiBulkImport.py:409 msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" msgstr "" @@ -905,22 +905,22 @@ msgid "" " and HUD are NOT affected by this problem." msgstr "" -#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:355 +#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:354 msgid "***Error: " msgstr "" -#: GuiGraphViewer.py:171 GuiPositionalStats.py:178 GuiRingPlayerStats.py:252 -#: GuiSessionViewer.py:204 GuiTourneyPlayerStats.py:277 +#: GuiGraphViewer.py:171 GuiPositionalStats.py:177 GuiRingPlayerStats.py:251 +#: GuiSessionViewer.py:203 GuiTourneyPlayerStats.py:277 msgid "No sites selected - defaulting to PokerStars" msgstr "" -#: GuiGraphViewer.py:176 GuiPositionalStats.py:181 GuiRingPlayerStats.py:255 -#: GuiSessionViewer.py:207 GuiTourneyPlayerStats.py:280 +#: GuiGraphViewer.py:176 GuiPositionalStats.py:180 GuiRingPlayerStats.py:254 +#: GuiSessionViewer.py:206 GuiTourneyPlayerStats.py:280 msgid "No player ids found" msgstr "" -#: GuiGraphViewer.py:181 GuiPositionalStats.py:184 GuiRingPlayerStats.py:258 -#: GuiSessionViewer.py:210 +#: GuiGraphViewer.py:181 GuiPositionalStats.py:183 GuiRingPlayerStats.py:257 +#: GuiSessionViewer.py:209 msgid "No limits found" msgstr "" @@ -1030,11 +1030,11 @@ msgstr "" msgid "Log Messages" msgstr "" -#: GuiPositionalStats.py:147 +#: GuiPositionalStats.py:146 msgid "DEBUG: activesite set to %s" msgstr "" -#: GuiPositionalStats.py:333 +#: GuiPositionalStats.py:332 msgid "Positional Stats page displayed in %4.2f seconds" msgstr "" @@ -1054,32 +1054,32 @@ msgstr "" msgid "Preferences" msgstr "" -#: GuiRingPlayerStats.py:323 GuiSessionViewer.py:249 +#: GuiRingPlayerStats.py:322 GuiSessionViewer.py:248 #: GuiTourneyPlayerStats.py:252 msgid "Stats page displayed in %4.2f seconds" msgstr "" -#: GuiRingPlayerStats.py:370 +#: GuiRingPlayerStats.py:369 msgid "***sortnums error: " msgstr "" -#: GuiRingPlayerStats.py:392 +#: GuiRingPlayerStats.py:391 msgid "***sortcols error: " msgstr "" -#: GuiRingPlayerStats.py:683 +#: GuiRingPlayerStats.py:682 msgid "Detailed Filters" msgstr "" -#: GuiRingPlayerStats.py:692 +#: GuiRingPlayerStats.py:691 msgid "Hand Filters:" msgstr "" -#: GuiRingPlayerStats.py:705 +#: GuiRingPlayerStats.py:704 msgid "between" msgstr "" -#: GuiRingPlayerStats.py:706 +#: GuiRingPlayerStats.py:705 msgid "and" msgstr "" @@ -1091,15 +1091,15 @@ msgstr "" msgid "ImportError: %s" msgstr "" -#: GuiSessionViewer.py:90 +#: GuiSessionViewer.py:89 msgid "Hand Breakdown for all levels listed above" msgstr "" -#: GuiSessionViewer.py:376 +#: GuiSessionViewer.py:375 msgid "Session candlestick graph" msgstr "" -#: GuiSessionViewer.py:379 +#: GuiSessionViewer.py:378 msgid "Sessions" msgstr "" @@ -2671,7 +2671,7 @@ msgid "P" msgstr "" #: fpdb.pyw:838 -msgid "Ring _Player Stats (tabulated view)" +msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "" #: fpdb.pyw:839 @@ -2679,7 +2679,7 @@ msgid "T" msgstr "" #: fpdb.pyw:839 -msgid "_Tourney Player Stats (tabulated view)" +msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "" #: fpdb.pyw:840 @@ -3016,7 +3016,7 @@ msgstr "" msgid "CLI for fpdb_import is now available as CliFpdb.py" msgstr "" -#: interlocks.py:49 +#: interlocks.py:61 msgid "lock already held by:" msgstr "" diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 8112617b..784b8940 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -4,8 +4,8 @@ # msgid "" msgstr "" -"Project-Id-Version: 0.20.904\n" -"POT-Creation-Date: 2010-08-17 20:08+CEST\n" +"Project-Id-Version: 0.20.905 plus git\n" +"POT-Creation-Date: 2010-08-25 13:31+CEST\n" "PO-Revision-Date: 2010-08-25 02:55+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" @@ -36,7 +36,7 @@ msgstr "re_HandInfo nem illeszkedik" msgid "No bringin found" msgstr "Beülő nem található" -#: BetfairToFpdb.py:206 PokerStarsToFpdb.py:440 +#: BetfairToFpdb.py:206 OnGameToFpdb.py:308 PokerStarsToFpdb.py:440 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "DEBUG: nem ismert readAction: '%s' '%s'" @@ -64,7 +64,11 @@ msgstr "Nem sikerült konvertálni: \"%s\"\n" msgid "Could not encode: \"%s\"\n" msgstr "Nem sikerült kódolni: \"%s\"\n" -#: Configuration.py:110 +#: Configuration.py:113 Configuration.py:126 +msgid "Config file has been created at %s.\n" +msgstr "Konfigurációs fájl létrehozva itt: %s.\n" + +#: Configuration.py:125 msgid "" "No %s found\n" " in %s\n" @@ -74,31 +78,27 @@ msgstr "" " itt: %s\n" " vagy itt: %s\n" -#: Configuration.py:111 -msgid "Config file has been created at %s.\n" -msgstr "Konfigurációs fájl létrehozva itt: %s.\n" - -#: Configuration.py:116 Configuration.py:117 +#: Configuration.py:131 Configuration.py:132 msgid "Error copying .example file, cannot fall back. Exiting.\n" msgstr "Hiba a .example fájl másolása közben, nem tudom folytatni. Kilépés.\n" -#: Configuration.py:121 Configuration.py:122 +#: Configuration.py:136 Configuration.py:137 msgid "No %s found, cannot fall back. Exiting.\n" msgstr "%s nem található, nem tudom folytatni. Kilépés.\n" -#: Configuration.py:152 +#: Configuration.py:167 msgid "Default logger initialised for " msgstr "Alapértelmezett naplózó előkészítve ehhez: " -#: Configuration.py:153 +#: Configuration.py:168 msgid "Default logger intialised for " msgstr "Alapértelmezett naplózó előkészítve ehhez: " -#: Configuration.py:164 Database.py:431 Database.py:432 +#: Configuration.py:179 Database.py:438 Database.py:439 msgid "Creating directory: '%s'" msgstr "Könyvtár létrehozása: '%s'" -#: Configuration.py:190 +#: Configuration.py:205 msgid "" "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're " "not on a Mac, please report this problem." @@ -106,27 +106,52 @@ msgstr "" "US-ASCII az alapértelmezett karakterkódolás, CP1252 használata ehelyett.Ha " "nem Mac-et használsz, akkor kérlek jelentsd ezt a problémát." -#: Configuration.py:273 +#: Configuration.py:303 msgid "Loading site" msgstr "Terem betöltése" -#: Configuration.py:511 +#: Configuration.py:520 msgid "config.general: adding %s = %s" msgstr "config.general: %s = %s hozzáadása" -#: Configuration.py:544 Configuration.py:545 +#: Configuration.py:567 Configuration.py:568 msgid "bad number in xalignment was ignored" msgstr "hibás érték az xalignment-ben - figyelmen kívül hagyás" -#: Configuration.py:598 Configuration.py:599 +#: Configuration.py:616 +msgid "missing config section raw_hands" +msgstr "" + +#: Configuration.py:622 +msgid "Invalid config value for raw_hands.save, defaulting to \"error\"" +msgstr "" + +#: Configuration.py:629 +msgid "Invalid config value for raw_hands.compression, defaulting to \"none\"" +msgstr "" + +#: Configuration.py:642 +msgid "missing config section raw_tourneys" +msgstr "" + +#: Configuration.py:648 +msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" +msgstr "" + +#: Configuration.py:655 +msgid "" +"Invalid config value for raw_tourneys.compression, defaulting to \"none\"" +msgstr "" + +#: Configuration.py:673 Configuration.py:674 msgid "Configuration file %s not found. Using defaults." msgstr "A %s konfigurációs fájl nem található. Alapértelmezések használata." -#: Configuration.py:615 +#: Configuration.py:690 msgid "Reading configuration file %s" msgstr "%s konfigurációs fájl használata" -#: Configuration.py:616 +#: Configuration.py:691 msgid "" "\n" "Reading configuration file %s\n" @@ -134,7 +159,7 @@ msgstr "" "\n" "%s konfigurációs fájl használata\n" -#: Configuration.py:621 +#: Configuration.py:696 msgid "Error parsing %s. See error log file." msgstr "Hiba a(z) %s olvasása közben. Nézz bele a naplófájlba." @@ -146,307 +171,303 @@ msgstr "SQLAlchemy connection pool használatának kihagyása." msgid "Not using numpy to define variance in sqlite." msgstr "A variancia SQLite-ban való definiálásához nincs használva a NumPy." -#: Database.py:246 +#: Database.py:250 msgid "Creating Database instance, sql = %s" msgstr "Adatbázis-példány létrehozása, sql = %s" -#: Database.py:382 +#: Database.py:389 msgid "*** WARNING UNKNOWN MYSQL ERROR:" msgstr "*** FIGYELEM: ISMERETLEN MYSQL HIBA: " -#: Database.py:436 +#: Database.py:443 msgid "Connecting to SQLite: %(database)s" msgstr "Kapcsolódás a %(database)s SQLite adatbázishoz" -#: Database.py:448 +#: Database.py:455 msgid "Some database functions will not work without NumPy support" msgstr "Néhány adatbázis-funkció nem fog működni NumPy támogatás nélkül" -#: Database.py:469 +#: Database.py:476 msgid "outdated or too new database version (%s) - please recreate tables" msgstr "" "elavult vagy túl új adatbázis verzió (%s) - kérlek hozd létre újra a táblákat" -#: Database.py:475 Database.py:476 +#: Database.py:482 Database.py:483 msgid "Failed to read settings table - recreating tables" msgstr "" "Nem sikerült az olvasás a beállítások táblából - táblák újra létrehozása" -#: Database.py:480 Database.py:481 +#: Database.py:487 Database.py:488 msgid "Failed to read settings table - please recreate tables" msgstr "" "Nem sikerült az olvasás a beállítások táblából - kérlek hozd létre újra a " "táblákat" -#: Database.py:499 -msgid "commit finished ok, i = " -msgstr "a véglegesítés sikeresen befejeződött, i = " - -#: Database.py:502 +#: Database.py:509 msgid "commit %s failed: info=%s value=%s" msgstr "%s. véglegesítés nem sikerült: info=%s érték=%s" -#: Database.py:506 +#: Database.py:513 msgid "commit failed" msgstr "a véglegesítés nem sikerült" -#: Database.py:675 Database.py:704 +#: Database.py:682 Database.py:711 msgid "*** Database Error: " msgstr "*** Adatbázis hiba: " -#: Database.py:701 +#: Database.py:708 msgid "Database: date n hands ago = " msgstr "Adatbázis: n-nel ezelőtti leosztás dátuma = " -#: Database.py:858 +#: Database.py:865 msgid "ERROR: query %s result does not have player_id as first column" msgstr "ERROR: a(z) %s lekérdezés eredményének nem a player_id az első oszlopa" -#: Database.py:900 +#: Database.py:907 msgid "getLastInsertId(): problem fetching insert_id? ret=%d" msgstr "getLastInsertId(): probléma insert_id lekérdezése közben? ret=%d" -#: Database.py:912 +#: Database.py:919 msgid "getLastInsertId(%s): problem fetching lastval? row=%d" msgstr "getLastInsertId(%s): probléma lastval lekérdezése közben? sor=%d" -#: Database.py:919 +#: Database.py:926 msgid "getLastInsertId(): unknown backend: %d" msgstr "getLastInsertId(): ismeretlen backend: %d" -#: Database.py:924 +#: Database.py:931 msgid "*** Database get_last_insert_id error: " msgstr "*** get_last_insert_id adatbázis hiba: " -#: Database.py:978 Database.py:1398 +#: Database.py:985 Database.py:1407 msgid "warning: drop pg fk %s_%s_fkey failed: %s, continuing ..." msgstr "" "figyelem: a(z) %s_%s_fkey pg idegen kulcs eldobása nem sikerült: %s, " "folytatás ..." -#: Database.py:982 Database.py:1402 +#: Database.py:989 Database.py:1411 msgid "warning: constraint %s_%s_fkey not dropped: %s, continuing ..." msgstr "figyelem: a(z) %s_%s_fkey megkötés nem lett eldobva: %s, folytatás ..." -#: Database.py:990 Database.py:1276 +#: Database.py:997 Database.py:1285 msgid "dropping mysql index " msgstr "MySQL index eldobása: " -#: Database.py:996 Database.py:1281 Database.py:1289 Database.py:1296 +#: Database.py:1003 Database.py:1290 Database.py:1298 Database.py:1305 msgid " drop index failed: " msgstr " index eldobása nem sikerült: " -#: Database.py:1001 Database.py:1283 +#: Database.py:1008 Database.py:1292 msgid "dropping pg index " msgstr "pg index eldobása: " -#: Database.py:1014 +#: Database.py:1021 msgid "warning: drop index %s_%s_idx failed: %s, continuing ..." msgstr "" "figyelem: a(z) %s_%s_idx index eldobása nem sikerült: %s, folytatás ..." -#: Database.py:1018 +#: Database.py:1025 msgid "warning: index %s_%s_idx not dropped %s, continuing ..." msgstr "figyelem: a(z) %s_%s_idx index nem lett eldobva: %s, folytatás ..." -#: Database.py:1058 Database.py:1066 Database.py:1329 Database.py:1337 +#: Database.py:1065 Database.py:1073 Database.py:1338 Database.py:1346 msgid "creating foreign key " msgstr "idegen kulcs létrehozása: " -#: Database.py:1064 Database.py:1085 Database.py:1335 +#: Database.py:1071 Database.py:1092 Database.py:1344 msgid " create foreign key failed: " msgstr " idegen kulcs létrehozása sikertelen: " -#: Database.py:1073 Database.py:1344 +#: Database.py:1080 Database.py:1353 msgid " create foreign key failed: " msgstr " idegen kulcs létrehozása sikertelen: " -#: Database.py:1080 +#: Database.py:1087 msgid "creating mysql index " msgstr "MySQL index létrehozása: " -#: Database.py:1089 +#: Database.py:1096 msgid "creating pg index " msgstr "pg index létrehozása: " -#: Database.py:1094 +#: Database.py:1101 msgid " create index failed: " msgstr " index létrehozása nem sikerült: " -#: Database.py:1134 Database.py:1135 +#: Database.py:1141 Database.py:1142 msgid "Finished recreating tables" msgstr "A táblák újra létrehozása befejeződött" -#: Database.py:1172 +#: Database.py:1181 msgid "***Error creating tables: " msgstr "*** Hiba a táblák létrehozása közben: " -#: Database.py:1182 +#: Database.py:1191 msgid "*** Error unable to get databasecursor" msgstr "*** Hiba: nem olvasható a databasecursor" -#: Database.py:1194 Database.py:1205 Database.py:1215 Database.py:1222 +#: Database.py:1203 Database.py:1214 Database.py:1224 Database.py:1231 msgid "***Error dropping tables: " msgstr "*** Hiba a táblák eldobása közben: " -#: Database.py:1220 +#: Database.py:1229 msgid "*** Error in committing table drop" msgstr "*** Hiba a tábla-eldobás véglegesítése közben" -#: Database.py:1234 Database.py:1235 +#: Database.py:1243 Database.py:1244 msgid "Creating mysql index %s %s" msgstr "MySQL index létrehozása: %s %s" -#: Database.py:1240 Database.py:1249 +#: Database.py:1249 Database.py:1258 msgid " create index failed: " msgstr " Index létrehozása nem sikerült: " -#: Database.py:1243 Database.py:1244 +#: Database.py:1252 Database.py:1253 msgid "Creating pgsql index %s %s" msgstr "pgsql index létrehozása: %s %s" -#: Database.py:1251 Database.py:1252 +#: Database.py:1260 Database.py:1261 msgid "Creating sqlite index %s %s" msgstr "SQLite index létrehozása: %s %s" -#: Database.py:1257 +#: Database.py:1266 msgid "Create index failed: " msgstr "Index létrehozása nem sikerült: " -#: Database.py:1259 +#: Database.py:1268 msgid "Unknown database: MySQL, Postgres and SQLite supported" msgstr "Ismeretlen adatbázis: a MySQL, a Postgres és az SQLite támogatott" -#: Database.py:1264 +#: Database.py:1273 msgid "Error creating indexes: " msgstr "Hiba az indexek létrehozása közben: " -#: Database.py:1291 +#: Database.py:1300 msgid "Dropping sqlite index " msgstr "SQLite index eldobása: " -#: Database.py:1298 +#: Database.py:1307 msgid "" "Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" msgstr "" "Fpdb csak a MySQL-t, a Postgres-t és az SQLite-ot támogatja. Mit próbáltál " "használni?" -#: Database.py:1312 Database.py:1352 +#: Database.py:1321 Database.py:1361 msgid " set_isolation_level failed: " msgstr " set_isolation_level meghiúsult: " -#: Database.py:1346 Database.py:1405 +#: Database.py:1355 Database.py:1414 msgid "Only MySQL and Postgres supported so far" msgstr "Egyelőre csak a MySQL és a Postgres támogatott" -#: Database.py:1376 +#: Database.py:1385 msgid "dropping mysql foreign key" msgstr "MySQL idegen kulcs eldobása" -#: Database.py:1380 +#: Database.py:1389 msgid " drop failed: " msgstr " az eldobás sikertelen: " -#: Database.py:1383 +#: Database.py:1392 msgid "dropping pg foreign key" msgstr "pg idegen kulcs eldobása" -#: Database.py:1395 +#: Database.py:1404 msgid "dropped pg foreign key %s_%s_fkey, continuing ..." msgstr "%s_%s_fkey pg idegen kulcs eldobva, folytatás ..." -#: Database.py:1496 +#: Database.py:1505 msgid "Rebuild hudcache took %.1f seconds" msgstr "A HUD cache újraépítése %.1f másodpercig tartott" -#: Database.py:1499 Database.py:1532 +#: Database.py:1508 Database.py:1541 msgid "Error rebuilding hudcache:" msgstr "Hiba a HUD cache újraépítése közben:" -#: Database.py:1544 Database.py:1550 +#: Database.py:1553 Database.py:1559 msgid "Error during analyze:" msgstr "Hiba analyze közben:" -#: Database.py:1554 +#: Database.py:1563 msgid "Analyze took %.1f seconds" msgstr "Analyze %1.f másodpercig tartott" -#: Database.py:1564 Database.py:1570 +#: Database.py:1573 Database.py:1579 msgid "Error during vacuum:" msgstr "Hiba vacuum közben:" -#: Database.py:1574 +#: Database.py:1583 msgid "Vacuum took %.1f seconds" msgstr "Vacuum %.1f másodpercig tartott" -#: Database.py:1586 +#: Database.py:1595 msgid "Error during lock_for_insert:" msgstr "Hiba lock_for_insert közben:" -#: Database.py:1959 +#: Database.py:1992 msgid "queue empty too long - writer stopping ..." msgstr "Queue.Empty túl sokáig tart - az írás befejeződik ..." -#: Database.py:1962 +#: Database.py:1995 msgid "writer stopping, error reading queue: " msgstr "az írás megállt, hiba a sor olvasásakor: " -#: Database.py:1987 +#: Database.py:2020 msgid "deadlock detected - trying again ..." msgstr "deadlock történt - újrapróbálás ..." -#: Database.py:1992 +#: Database.py:2025 msgid "too many deadlocks - failed to store hand " msgstr "túl sok deadlock - nem sikerült tárolni a leosztást " -#: Database.py:1996 +#: Database.py:2029 msgid "***Error storing hand: " msgstr "***Hiba a leosztás tárolása közben: " -#: Database.py:2006 +#: Database.py:2039 msgid "db writer finished: stored %d hands (%d fails) in %.1f seconds" msgstr "" "adatbázisba írás befejeződött: %d leosztás tárolva (%d sikertelen) %.1f mp " "alatt" -#: Database.py:2016 +#: Database.py:2049 msgid "***Error sending finish: " msgstr "***Hiba a befejezés küldésekor: " -#: Database.py:2096 +#: Database.py:2131 msgid "invalid source in Database.createOrUpdateTourney" msgstr "érvénytelen forrás a Database.createOrUpdateTourney-ban" -#: Database.py:2109 +#: Database.py:2144 msgid "invalid source in Database.createOrUpdateTourneysPlayers" msgstr "érvénytelen forrás a Database.createOrUpdateTourneysPlayers-ben" -#: Database.py:2235 +#: Database.py:2270 msgid "HandToWrite.init error: " msgstr "HandToWrite.init hiba: " -#: Database.py:2285 +#: Database.py:2320 msgid "HandToWrite.set_all error: " msgstr "HandToWrite.set_all hiba: " -#: Database.py:2316 +#: Database.py:2351 msgid "nutOmatic is id_player = %d" msgstr "nutOmatic id_player értéke = %d" -#: Database.py:2324 +#: Database.py:2359 msgid "query plan: " msgstr "lekérdezési terv: " -#: Database.py:2333 +#: Database.py:2368 msgid "cards =" msgstr "kezdőkéz =" -#: Database.py:2336 +#: Database.py:2371 msgid "get_stats took: %4.3f seconds" msgstr "get_stats időigény: %4.3f mp" -#: Database.py:2338 Tables.py:448 +#: Database.py:2373 Tables.py:448 msgid "press enter to continue" msgstr "nyomj ENTER-t a folytatáshoz" @@ -724,7 +745,7 @@ msgstr "Indexek eldobása:" msgid "auto" msgstr "automatikus" -#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:397 +#: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:398 msgid "don't drop" msgstr "megtartás" @@ -744,9 +765,9 @@ msgstr "Terem:" msgid "Drop HudCache:" msgstr "HUD gyorstár eldobása:" -#: GuiBulkImport.py:297 -msgid "Import" -msgstr "Importálás" +#: GuiBulkImport.py:297 fpdb.pyw:832 +msgid "_Bulk Import" +msgstr "_Importálás" #: GuiBulkImport.py:299 msgid "Import clicked" @@ -786,43 +807,48 @@ msgstr "" "A kiválasztott konverzió elvégzése Stars Archívum formátumra (ahogy az " "ügyfélszolgálattól jön" -#: GuiBulkImport.py:363 +#: GuiBulkImport.py:360 +msgid "" +"Output the pprinted version of the HandsPlayer hash for regresion testing" +msgstr "" + +#: GuiBulkImport.py:365 msgid "USAGE:" msgstr "HASZNÁLAT:" -#: GuiBulkImport.py:364 +#: GuiBulkImport.py:366 msgid "PokerStars converter: ./GuiBulkImport.py -c PokerStars -f filename" msgstr "PokerStars átalakító: ./GuiBulkImport.py -c PokerStars -f fájlnév" -#: GuiBulkImport.py:365 +#: GuiBulkImport.py:367 msgid "" "Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" msgstr "" "Full Tilt átalakító: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f fájlnév" -#: GuiBulkImport.py:366 +#: GuiBulkImport.py:368 msgid "Everleaf converter: ./GuiBulkImport.py -c Everleaf -f filename" msgstr "Everleaf átalakító: ./GuiBulkImport.py -c Everleaf -f fájlnév" -#: GuiBulkImport.py:367 +#: GuiBulkImport.py:369 msgid "Absolute converter: ./GuiBulkImport.py -c Absolute -f filename" msgstr "Absolute átalakító: ./GuiBulkImport.py -c Absolute -f fájlnév" -#: GuiBulkImport.py:368 +#: GuiBulkImport.py:370 msgid "PartyPoker converter: ./GuiBulkImport.py -c PartyPoker -f filename" msgstr "PartyPoker átalakító: ./GuiBulkImport.py -c PartyPoker -f fájlnév" -#: GuiBulkImport.py:384 +#: GuiBulkImport.py:385 msgid "-q is deprecated. Just use \"-f filename\" instead" msgstr "A -q már elévült. Használd helyette a \"-f fájlnév\" formát." -#: GuiBulkImport.py:406 +#: GuiBulkImport.py:409 msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" -"s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " +"%s másodperc alatt - %.0f/mp" #: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" @@ -840,11 +866,11 @@ msgstr "Név" msgid "Description" msgstr "Leírás" -#: GuiDatabase.py:114 GuiImapFetcher.py:123 +#: GuiDatabase.py:114 GuiImapFetcher.py:119 msgid "Username" msgstr "Felhasználónév" -#: GuiDatabase.py:115 GuiImapFetcher.py:123 +#: GuiDatabase.py:115 GuiImapFetcher.py:119 msgid "Password" msgstr "Jelszó" @@ -876,7 +902,7 @@ msgstr " kapcsolódás OK" msgid " not connected but no exception" msgstr " nem kapcsolódott, de nincs hibaüzenet" -#: GuiDatabase.py:293 fpdb.pyw:906 +#: GuiDatabase.py:293 fpdb.pyw:905 msgid "" "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -891,7 +917,7 @@ msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " "- Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" -#: GuiDatabase.py:301 fpdb.pyw:911 +#: GuiDatabase.py:301 fpdb.pyw:910 msgid "" "Postgres Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -946,22 +972,22 @@ msgstr "" "A program más részeit, pl. az importálást vagy a HUD-ot,\n" "nem érinti ez a probléma." -#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:355 +#: GuiGraphViewer.py:141 GuiGraphViewer.py:255 GuiSessionViewer.py:354 msgid "***Error: " msgstr "***Hiba: " -#: GuiGraphViewer.py:171 GuiPositionalStats.py:178 GuiRingPlayerStats.py:252 -#: GuiSessionViewer.py:204 GuiTourneyPlayerStats.py:277 +#: GuiGraphViewer.py:171 GuiPositionalStats.py:177 GuiRingPlayerStats.py:251 +#: GuiSessionViewer.py:203 GuiTourneyPlayerStats.py:277 msgid "No sites selected - defaulting to PokerStars" msgstr "Nincs kiválasztott terem - PokerStars használata" -#: GuiGraphViewer.py:176 GuiPositionalStats.py:181 GuiRingPlayerStats.py:255 -#: GuiSessionViewer.py:207 GuiTourneyPlayerStats.py:280 +#: GuiGraphViewer.py:176 GuiPositionalStats.py:180 GuiRingPlayerStats.py:254 +#: GuiSessionViewer.py:206 GuiTourneyPlayerStats.py:280 msgid "No player ids found" msgstr "Nincs játékosazonosító" -#: GuiGraphViewer.py:181 GuiPositionalStats.py:184 GuiRingPlayerStats.py:258 -#: GuiSessionViewer.py:210 +#: GuiGraphViewer.py:181 GuiPositionalStats.py:183 GuiRingPlayerStats.py:257 +#: GuiSessionViewer.py:209 msgid "No limits found" msgstr "Nem található limit" @@ -1027,22 +1053,22 @@ msgstr "" "Ha megváltoztatod a beállításokat, akkor importálás előtt előbb el kell " "mentened őket." -#: GuiImapFetcher.py:103 +#: GuiImapFetcher.py:98 msgid "Starting import. Please wait." msgstr "Importálás indítása. Kérlek várj." -#: GuiImapFetcher.py:107 +#: GuiImapFetcher.py:103 msgid "Finished import without error." msgstr "Importálás sikeresen befejezve." -#: GuiImapFetcher.py:110 +#: GuiImapFetcher.py:106 msgid "" "Login to mailserver failed: please check mailserver, username and password" msgstr "" "A bejelentkezés a levelezőkiszolgálóra meghiúsult: kérlek ellenőrizd a " "megadott levelezőkiszolgálót, a felhasználónevet és a jelszót." -#: GuiImapFetcher.py:113 +#: GuiImapFetcher.py:109 msgid "" "Could not connect to mailserver: check mailserver and use SSL settings and " "internet connectivity" @@ -1050,31 +1076,31 @@ msgstr "" "nem sikerült a csatlakozás a levelezőkiszolgálóhoz: ellenőrizd a " "levelezőkiszolgáló és az SSL beállításait, illetve az internetkapcsolatot." -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Fetch Type" msgstr "Fogadás módja" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Mail Folder" msgstr "Levelek mappája" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Mailserver" msgstr "Levelezőkiszolgáló" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Site" msgstr "Terem" -#: GuiImapFetcher.py:123 +#: GuiImapFetcher.py:119 msgid "Use SSL" msgstr "SSL használata" -#: GuiImapFetcher.py:154 +#: GuiImapFetcher.py:151 msgid "Yes" msgstr "Igen" -#: GuiImapFetcher.py:155 +#: GuiImapFetcher.py:152 msgid "No" msgstr "Nem" @@ -1082,11 +1108,11 @@ msgstr "Nem" msgid "Log Messages" msgstr "Naplóbejegyzések" -#: GuiPositionalStats.py:147 +#: GuiPositionalStats.py:146 msgid "DEBUG: activesite set to %s" msgstr "DEBUG: aktív terem: %s" -#: GuiPositionalStats.py:333 +#: GuiPositionalStats.py:332 msgid "Positional Stats page displayed in %4.2f seconds" msgstr "Pozíciós statisztikák megjelenítve %4.2f mp alatt" @@ -1106,32 +1132,32 @@ msgstr "Beállítási párbeszéd (teszt)" msgid "Preferences" msgstr "Beállítások" -#: GuiRingPlayerStats.py:323 GuiSessionViewer.py:249 +#: GuiRingPlayerStats.py:322 GuiSessionViewer.py:248 #: GuiTourneyPlayerStats.py:252 msgid "Stats page displayed in %4.2f seconds" msgstr "Statisztikák megjelenítve %4.2f mp alatt" -#: GuiRingPlayerStats.py:370 +#: GuiRingPlayerStats.py:369 msgid "***sortnums error: " msgstr "***sortnums hiba: " -#: GuiRingPlayerStats.py:392 +#: GuiRingPlayerStats.py:391 msgid "***sortcols error: " msgstr "***sortCols hiba: " -#: GuiRingPlayerStats.py:683 +#: GuiRingPlayerStats.py:682 msgid "Detailed Filters" msgstr "Részletes szűrők" -#: GuiRingPlayerStats.py:692 +#: GuiRingPlayerStats.py:691 msgid "Hand Filters:" msgstr "Leosztás szűrők:" -#: GuiRingPlayerStats.py:705 +#: GuiRingPlayerStats.py:704 msgid "between" msgstr "Min:" -#: GuiRingPlayerStats.py:706 +#: GuiRingPlayerStats.py:705 msgid "and" msgstr "Max:" @@ -1143,15 +1169,15 @@ msgstr "Nem sikerült a numpy és/vagy a matplotlib betöltése a Session nézet msgid "ImportError: %s" msgstr "ImportError: %s" -#: GuiSessionViewer.py:90 +#: GuiSessionViewer.py:89 msgid "Hand Breakdown for all levels listed above" msgstr "Kezdőkezekre bontva a fenti limiteknél" -#: GuiSessionViewer.py:376 +#: GuiSessionViewer.py:375 msgid "Session candlestick graph" msgstr "Session gyertya grafikon" -#: GuiSessionViewer.py:379 +#: GuiSessionViewer.py:378 msgid "Sessions" msgstr "Sessionök" @@ -1203,7 +1229,7 @@ msgstr "" "\n" "HUD_main: indítás ..." -#: HUD_main.pyw:89 fpdb.pyw:876 +#: HUD_main.pyw:89 msgid "Logfile is " msgstr "A naplófájl " @@ -1215,7 +1241,7 @@ msgstr "HUD_main indítás: " msgid "Note: error output is being diverted to:\n" msgstr "Megjegyzés: a hibakimenet ide van átirányítva:\n" -#: HUD_main.pyw:96 fpdb.pyw:1138 +#: HUD_main.pyw:96 fpdb.pyw:1139 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1273,11 +1299,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -1491,7 +1517,7 @@ msgstr "KEZDŐKÉZ" msgid "TOURNEYS PLAYER IDS" msgstr "VERSENYJÁTÉKOS AZONOSÍTÓK" -#: Hand.py:225 Hand.py:1244 +#: Hand.py:225 Hand.py:1242 msgid "[ERROR] Tried to add holecards for unknown player: %s" msgstr "[ERROR] Kezdőkéz hozzáadása ismeretlen játékoshoz: %s" @@ -1509,38 +1535,40 @@ msgstr "" "FpdbParseError: markStreets hívása meghiúsult: az első 100 karakter: '%s'" #: Hand.py:323 -msgid "DEBUG: checkPlayerExists %s fail" +#, fuzzy +msgid "DEBUG: checkPlayerExists %s fail on hand number %s" msgstr "DEBUG: checkPlayerExists %s játékos nem létezik." #: Hand.py:324 -msgid "checkPlayerExists: '%s' failed." +#, fuzzy +msgid "checkPlayerExists: '%s fail on hand number %s" msgstr "checkPlayerExists: '%s' játékos nem létezik." -#: Hand.py:407 +#: Hand.py:405 msgid "%s %s calls %s" msgstr "%s utcán %s játékos ennyit megad: %s" -#: Hand.py:477 +#: Hand.py:475 msgid "%s %s raise %s" msgstr "%s utcán %s játékos eddig emel: %s" -#: Hand.py:488 +#: Hand.py:486 msgid "%s %s bets %s" msgstr "%s utcán %s játékos ennyit hív: %s" -#: Hand.py:507 +#: Hand.py:505 msgid "%s %s folds" msgstr "%s utcán %s játékos dob" -#: Hand.py:516 +#: Hand.py:514 msgid "%s %s checks" msgstr "%s utcán %s játékos passzol" -#: Hand.py:536 +#: Hand.py:534 msgid "addShownCards %s hole=%s all=%s" msgstr "addShownCards %s játékos kézben=%s mind=%s" -#: Hand.py:647 +#: Hand.py:645 msgid "" "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, " "expecting datetime.date object, received:" @@ -1548,18 +1576,18 @@ msgstr "" "*** ERROR - HAND: writeGameLine hívása nem várt STARTTIME értékkel, datetime." "date objektumot vár, ezt kapta:" -#: Hand.py:648 +#: Hand.py:646 msgid "" "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" "*** Győződj meg róla, hogy a feldolgozód helyesen állítja be a hand." "startTime értékét!" -#: Hand.py:649 +#: Hand.py:647 msgid "*** Game String:" msgstr "*** Játék sztring:" -#: Hand.py:703 +#: Hand.py:701 msgid "" "*** Parse error reading blinds (check compilePlayerRegexs as a likely " "culprit)" @@ -1567,75 +1595,75 @@ msgstr "" "*** Feldolgozási hiba a vakok beolvasása közben (valószínűleg a " "compilePlayerRegex-eket kell ellenőrizni)" -#: Hand.py:730 +#: Hand.py:728 msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" msgstr "" "HoldemOmahaHand.__init__: nem lehet a leosztást összeállítani az " "adatbázisból a leosztás azonosítója nélkül" -#: Hand.py:732 +#: Hand.py:730 msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" msgstr "" "HoldemOmahaHand.__init__: sem a HHC, sem az adatbázis+leosztásaonosító nem " "lett megadva" -#: Hand.py:1113 +#: Hand.py:1111 msgid "*** DEALING HANDS ***" msgstr "*** OSZTÁS ***" -#: Hand.py:1118 +#: Hand.py:1116 msgid "Dealt to %s: [%s]" msgstr "%s kapja: [%s]" -#: Hand.py:1123 +#: Hand.py:1121 msgid "*** FIRST DRAW ***" msgstr "*** ELSŐ CSERE ***" -#: Hand.py:1133 +#: Hand.py:1131 msgid "*** SECOND DRAW ***" msgstr "*** MÁSODIK CSERE ***" -#: Hand.py:1143 +#: Hand.py:1141 msgid "*** THIRD DRAW ***" msgstr "*** HARMADIK CSERE ***" -#: Hand.py:1153 Hand.py:1371 +#: Hand.py:1151 Hand.py:1369 msgid "*** SHOW DOWN ***" msgstr "*** MUTATÁS ***" -#: Hand.py:1168 Hand.py:1386 +#: Hand.py:1166 Hand.py:1384 msgid "*** SUMMARY ***" msgstr "*** ÖSSZEGZÉS ***" -#: Hand.py:1253 +#: Hand.py:1251 msgid "%s %s completes %s" msgstr "%s utcán %s játékos kiegészít erre: %s" -#: Hand.py:1271 +#: Hand.py:1269 msgid "Bringin: %s, %s" msgstr "Beülő: %s, %s" -#: Hand.py:1311 +#: Hand.py:1309 msgid "*** 3RD STREET ***" msgstr "*** HARMADIK UTCA ***" -#: Hand.py:1325 +#: Hand.py:1323 msgid "*** 4TH STREET ***" msgstr "*** NEGYEDIK UTCA ***" -#: Hand.py:1337 +#: Hand.py:1335 msgid "*** 5TH STREET ***" msgstr "*** ÖTÖDIK UTCA ***" -#: Hand.py:1349 +#: Hand.py:1347 msgid "*** 6TH STREET ***" msgstr "*** HATODIK UTCA ***" -#: Hand.py:1359 +#: Hand.py:1357 msgid "*** RIVER ***" msgstr "*** RIVER ***" -#: Hand.py:1451 +#: Hand.py:1449 msgid "" "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should " "be impossible for anyone who is not a hero" @@ -1643,93 +1671,113 @@ msgstr "" "join_holecards: a kézbe kapott lapok száma vagy < 4, 4 or 7 - 5 és 6 " "mindenki számára lehetetlen, aki nem hős" -#: Hand.py:1452 +#: Hand.py:1450 msgid "join_holcards: holecards(%s): %s" msgstr "join_holcards: holecards(%s): %s" -#: Hand.py:1535 +#: Hand.py:1533 msgid "DEBUG: call Pot.end() before printing pot total" msgstr "DEBUG: Pot.end() hívása a teljes kassza kiírása előtt" -#: Hand.py:1537 +#: Hand.py:1535 msgid "FpdbError in printing Hand object" msgstr "FpdbError egy Hand objektum kiírása közben" -#: HandHistoryConverter.py:134 +#: HandHistoryConverter.py:135 msgid "Failed sanity check" msgstr "A megfelelőségi ellenőrzésen nem ment át" -#: HandHistoryConverter.py:142 +#: HandHistoryConverter.py:143 msgid "Tailing '%s'" msgstr "'%s' követése" -#: HandHistoryConverter.py:149 +#: HandHistoryConverter.py:150 msgid "HHC.start(follow): processHand failed: Exception msg: '%s'" msgstr "HHC.start(follow): processHand meghiúsult: A hibaüzenet szövege: '%s'" -#: HandHistoryConverter.py:163 +#: HandHistoryConverter.py:154 +msgid "handsList is " +msgstr "" + +#: HandHistoryConverter.py:165 msgid "HHC.start(): processHand failed: Exception msg: '%s'" msgstr "HHC.start(): processHand meghiúsult: A hibaüzenet szövege: '%s'" -#: HandHistoryConverter.py:167 +#: HandHistoryConverter.py:169 msgid "Read %d hands (%d failed) in %.3f seconds" msgstr "%d leosztás beolvasva (%d sikertelen) %.3f mp alatt" -#: HandHistoryConverter.py:173 +#: HandHistoryConverter.py:175 msgid "Summary file '%s' correctly parsed (took %.3f seconds)" msgstr "A(z) '%s' összefoglaló fájl rendben feldolgozva (%.3f mp)" -#: HandHistoryConverter.py:175 +#: HandHistoryConverter.py:177 msgid "Error converting summary file '%s' (took %.3f seconds)" msgstr "Hiba a(z) '%s' összefoglaló fájl konvertálása közben (%.3f mp)" -#: HandHistoryConverter.py:178 +#: HandHistoryConverter.py:180 msgid "Error converting '%s'" msgstr "Hiba a(z) '%s' konvertálása közben" -#: HandHistoryConverter.py:209 +#: HandHistoryConverter.py:211 msgid "%s changed inode numbers from %d to %d" msgstr "%s megváltoztatta az inode számokat %d =>%d" -#: HandHistoryConverter.py:254 +#: HandHistoryConverter.py:256 msgid "Converting starsArchive format to readable" msgstr "starsArchive formátum konvertálása olvashatóra" -#: HandHistoryConverter.py:259 +#: HandHistoryConverter.py:261 msgid "Converting ftpArchive format to readable" msgstr "ftpArchive formátum konvertálása olvashatóra" -#: HandHistoryConverter.py:264 +#: HandHistoryConverter.py:266 msgid "Read no hands." msgstr "Nem történt beolvasás." -#: HandHistoryConverter.py:401 +#: HandHistoryConverter.py:474 msgid "HH Sanity Check: output and input files are the same, check config" msgstr "" "HH Sanity Check: a kimeneti és bemeneti fájlok azonosak, ellenőrizd a " "beállításokat" -#: HandHistoryConverter.py:436 +#: HandHistoryConverter.py:497 msgid "Reading stdin with %s" msgstr "Standard bemenet olvasása ezzel: %s" -#: HandHistoryConverter.py:451 +#: HandHistoryConverter.py:512 msgid "unable to read file with any codec in list!" msgstr "a fájl olvasása nem sikerült egyik listabeli kódolással sem" -#: HandHistoryConverter.py:605 +#: HandHistoryConverter.py:579 +msgid " given TZ:" +msgstr "" + +#: HandHistoryConverter.py:579 +msgid "raw time:" +msgstr "" + +#: HandHistoryConverter.py:589 +msgid "changeTimeZone: offset=" +msgstr "" + +#: HandHistoryConverter.py:652 +msgid "utcTime:" +msgstr "" + +#: HandHistoryConverter.py:685 msgid "Unable to create output directory %s for HHC!" msgstr "A %s kimeneti könyvtár nem hozható létre a feldolgozó számára'" -#: HandHistoryConverter.py:606 +#: HandHistoryConverter.py:686 msgid "*** ERROR: UNABLE TO CREATE OUTPUT DIRECTORY" msgstr "*** ERROR: A KIMENETI KÖNYVTÁR NEM HOZHATÓ LÉTRE" -#: HandHistoryConverter.py:608 +#: HandHistoryConverter.py:688 msgid "Created directory '%s'" msgstr "'%s' könyvtár létrehozva" -#: HandHistoryConverter.py:612 +#: HandHistoryConverter.py:692 msgid "out_path %s couldn't be opened" msgstr "%s kimeneti könyvtár nem nyitható meg" @@ -1843,15 +1891,15 @@ msgstr "StatWindows debugolása" msgid "Set max seats" msgstr "Max székek beállítása" -#: Hud.py:540 +#: Hud.py:543 msgid "Updating config file" msgstr "Konfigurációs fájl frissítése" -#: Hud.py:549 +#: Hud.py:552 msgid "No layout found for %d-max games for site %s\n" msgstr "Nem található elrendezés a %d fős asztalok számára a %s teremben\n" -#: Hud.py:563 +#: Hud.py:566 msgid "" "exception in Hud.adj_seats\n" "\n" @@ -1859,15 +1907,15 @@ msgstr "" "hiba a Hud.adj_seats helyen\n" "\n" -#: Hud.py:564 +#: Hud.py:567 msgid "error is %s" msgstr "A hiba a következő: %s" -#: Hud.py:571 +#: Hud.py:574 msgid "Error finding actual seat.\n" msgstr "Hiba az aktuális szék keresése közben.\n" -#: Hud.py:587 +#: Hud.py:590 msgid "" "------------------------------------------------------------\n" "Creating hud from hand %s\n" @@ -1875,7 +1923,7 @@ msgstr "" "------------------------------------------------------------\n" "HUD készítése ebből a leosztásból: %s\n" -#: Hud.py:636 +#: Hud.py:639 msgid "" "KeyError at the start of the for loop in update in hud_main. How this can " "possibly happen is totally beyond my comprehension. Your HUD may be about to " @@ -1884,11 +1932,11 @@ msgstr "" "KeyError a for ciklus kezdeténél a hud_main-ban. Fogalmam sincs, hogy ez " "hogyan lehetséges. A HUD-od valószínűleg nagyon furcsa lesz. -Eric" -#: Hud.py:637 +#: Hud.py:640 msgid "(btw, the key was %s and statd is %s" msgstr "(ja, a kulcs %s volt a statd pedig %s)" -#: Hud.py:944 +#: Hud.py:947 msgid "" "Fake main window, blah blah, blah\n" "blah, blah" @@ -1896,7 +1944,7 @@ msgstr "" "Kamu főablak, bla bla, bla\n" "bla, bla" -#: Hud.py:952 +#: Hud.py:955 msgid "Table not found." msgstr "Az asztal nem található." @@ -1904,7 +1952,7 @@ msgstr "Az asztal nem található." msgid "response to logging in:" msgstr "válasz a bejelentkezésre:" -#: ImapFetcher.py:86 +#: ImapFetcher.py:85 msgid "completed running Imap import, closing server connection" msgstr "IMAP import befejezve, kapcsolat lezárása" @@ -1912,6 +1960,39 @@ msgstr "IMAP import befejezve, kapcsolat lezárása" msgid "No Name" msgstr "Nincs név" +#: OnGameToFpdb.py:153 PokerStarsToFpdb.py:189 +msgid "determineGameType: Unable to recognise gametype from: '%s'" +msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" + +#: OnGameToFpdb.py:154 PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 +msgid "determineGameType: Raising FpdbParseError" +msgstr "determineGameType: FpdbParseError" + +#: OnGameToFpdb.py:155 PokerStarsToFpdb.py:191 +msgid "Unable to recognise gametype from: '%s'" +msgstr "Nem sikerült felismerni a játéktípust innen: '%s'" + +#: OnGameToFpdb.py:235 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +msgid "readButton: not found" +msgstr "readButton: nem található" + +#: OnGameToFpdb.py:250 +#, fuzzy +msgid "readBlinds starting" +msgstr "HUD_main indítása\n" + +#: OnGameToFpdb.py:254 +msgid "re_postSB failed, hand=" +msgstr "" + +#: OnGameToFpdb.py:257 +msgid "readBlinds in noSB exception" +msgstr "" + +#: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 +msgid "reading antes" +msgstr "antek olvasása" + #: Options.py:40 msgid "If passed error output will go to the console rather than ." msgstr "Ha be van állítva, akkor a hibakimenet a konzolra lesz irányítva." @@ -1978,10 +2059,6 @@ msgstr "Handinfo nem olvasható az aktuális leosztásból" msgid "Cannot read GameType for current hand" msgstr "GameType nem olvasható az aktuális leosztásból" -#: PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 -msgid "readButton: not found" -msgstr "readButton: nem található" - #: PartyPokerToFpdb.py:479 msgid "Unimplemented readAction: '%s' '%s'" msgstr "Nem ismert readAction: '%s' '%s'" @@ -1994,18 +2071,6 @@ msgstr "nem sikerült felismerni a beülő pénznemét ebben:" msgid "in not result starttime" msgstr "a starttime nem található részében" -#: PokerStarsToFpdb.py:189 -msgid "determineGameType: Unable to recognise gametype from: '%s'" -msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" - -#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 -msgid "determineGameType: Raising FpdbParseError" -msgstr "determineGameType: FpdbParseError" - -#: PokerStarsToFpdb.py:191 -msgid "Unable to recognise gametype from: '%s'" -msgstr "Nem sikerült felismerni a játéktípust innen: '%s'" - #: PokerStarsToFpdb.py:221 msgid "Lim_Blinds has no lookup for '%s'" msgstr "Lim_Blinds nem tartalmazza ezt: '%s'" @@ -2014,10 +2079,6 @@ msgstr "Lim_Blinds nem tartalmazza ezt: '%s'" msgid "failed to detect currency" msgstr "nem sikerült a pénznem meghatározása" -#: PokerStarsToFpdb.py:358 -msgid "reading antes" -msgstr "antek olvasása" - #: Stats.py:103 msgid "exception getting stat %s for player %s %s" msgstr "hiba a %s statisztika számításakor %s játékosnál: %s" @@ -2448,11 +2509,11 @@ msgstr "addPlayer: helyezés:%s - név : '%s' - Nyeremény (%s)" msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" msgstr "incrementPlayerWinnings: név : '%s' - plusz nyeremény (%s)" -#: WinTables.py:70 +#: WinTables.py:82 msgid "Window %s not found. Skipping." msgstr "A(z) %s nevű ablak nincs meg. Kihagyás." -#: WinTables.py:73 +#: WinTables.py:85 msgid "self.window doesn't exist? why?" msgstr "self.window nem létezik? miért?" @@ -2756,10 +2817,6 @@ msgstr "Leo_sztásarchívum könyvtára" msgid "B" msgstr "B" -#: fpdb.pyw:832 -msgid "_Bulk Import" -msgstr "_Importálás" - #: fpdb.pyw:833 msgid "I" msgstr "I" @@ -2801,7 +2858,8 @@ msgid "P" msgstr "P" #: fpdb.pyw:838 -msgid "Ring _Player Stats (tabulated view)" +#, fuzzy +msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "Kész_pénzes statisztikák (táblázat)" #: fpdb.pyw:839 @@ -2809,7 +2867,8 @@ msgid "T" msgstr "T" #: fpdb.pyw:839 -msgid "_Tourney Player Stats (tabulated view)" +#, fuzzy +msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "Versenyjá_tékos statisztikák (táblázat)" #: fpdb.pyw:840 @@ -2824,7 +2883,7 @@ msgstr "O" msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "P_ozíciós statisztikák (táblázat; SQLite-tal nem)" -#: fpdb.pyw:842 fpdb.pyw:1059 +#: fpdb.pyw:842 fpdb.pyw:1058 msgid "Session Stats" msgstr "Session statisztikák" @@ -2886,6 +2945,11 @@ msgstr "" msgid "CONFIG FILE ERROR" msgstr "KONFIGURÁCIÓS FÁJL HIBA" +#: fpdb.pyw:876 +#, fuzzy +msgid "Logfile is %s\n" +msgstr "A naplófájl " + #: fpdb.pyw:878 msgid "Config file" msgstr "Konfigurációs fájl" @@ -2911,37 +2975,38 @@ msgstr "" "résznél a Beállítások ablakban (Főmenü) mielőtt megpróbálnál leosztásokat " "importálni." -#: fpdb.pyw:904 -msgid "Connected to SQLite: %(database)s" +#: fpdb.pyw:903 +#, fuzzy +msgid "Connected to SQLite: %s" msgstr "Kapcsolódva a %(database)s SQLite adatbázishoz" -#: fpdb.pyw:908 +#: fpdb.pyw:907 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " "- " -#: fpdb.pyw:909 +#: fpdb.pyw:908 msgid "Please check that the MySQL service has been started" msgstr "Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" -#: fpdb.pyw:913 +#: fpdb.pyw:912 msgid "Postgres client reports: Unable to connect - " msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " -#: fpdb.pyw:914 +#: fpdb.pyw:913 msgid "Please check that the Postgres service has been started" msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" -#: fpdb.pyw:938 +#: fpdb.pyw:937 msgid "Strong Warning - Invalid database version" msgstr "Nyomatékos figyelmeztetés - Érvénytelen adatbázis verzió" -#: fpdb.pyw:940 +#: fpdb.pyw:939 msgid "An invalid DB version or missing tables have been detected." msgstr "Érvénytelen adatbázis verziót vagy hiányzó táblá(ka)t találtam." -#: fpdb.pyw:944 +#: fpdb.pyw:943 msgid "" "This error is not necessarily fatal but it is strongly recommended that you " "recreate the tables by using the Database menu." @@ -2949,7 +3014,7 @@ msgstr "" "Ez a hiba nem feltétlenül végzetes, de erősen javasolt a táblák " "újragenerálása az Adatbázis menü használatával." -#: fpdb.pyw:948 +#: fpdb.pyw:947 msgid "" "Not doing this will likely lead to misbehaviour including fpdb crashes, " "corrupt data etc." @@ -2958,13 +3023,13 @@ msgstr "" "kiléphet, tönkretehet adatokat, stb." # FIXME: would need a different word ordering in Hungarian -#: fpdb.pyw:961 +#: fpdb.pyw:960 msgid "Status: Connected to %s database named %s on host %s" msgstr "" "Állapot: Kapcsolódva a(z) %s adatbázis-kezelő %s nevű adatbázisához a(z) %s " "kiszolgálón" -#: fpdb.pyw:971 +#: fpdb.pyw:970 msgid "" "\n" "Global lock taken by" @@ -2972,7 +3037,7 @@ msgstr "" "\n" "Globális zárolást végzett:" -#: fpdb.pyw:974 +#: fpdb.pyw:973 msgid "" "\n" "Failed to get global lock, it is currently held by" @@ -2980,43 +3045,43 @@ msgstr "" "\n" "Globális zárolás meghiúsult, jelenleg már zárolta:" -#: fpdb.pyw:984 +#: fpdb.pyw:983 msgid "Quitting normally" msgstr "Normál kilépés" -#: fpdb.pyw:1008 +#: fpdb.pyw:1007 msgid "Global lock released.\n" msgstr "Globális zárolás feloldva.\n" -#: fpdb.pyw:1015 +#: fpdb.pyw:1014 msgid "Auto Import" msgstr "AutoImport" -#: fpdb.pyw:1022 +#: fpdb.pyw:1021 msgid "Bulk Import" msgstr "Importálás" -#: fpdb.pyw:1028 +#: fpdb.pyw:1027 msgid "eMail Import" msgstr "Email import" -#: fpdb.pyw:1035 +#: fpdb.pyw:1034 msgid "Ring Player Stats" msgstr "Készpénzes statisztikák" -#: fpdb.pyw:1041 +#: fpdb.pyw:1040 msgid "Tourney Player Stats" msgstr "Versenystatisztikák" -#: fpdb.pyw:1047 +#: fpdb.pyw:1046 msgid "Tourney Viewer" msgstr "Verseny nézet" -#: fpdb.pyw:1053 +#: fpdb.pyw:1052 msgid "Positional Stats" msgstr "Pozíciós statisztikák" -#: fpdb.pyw:1063 +#: fpdb.pyw:1062 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in " @@ -3074,18 +3139,18 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" -"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " +"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." -#: fpdb.pyw:1080 +#: fpdb.pyw:1079 msgid "Help" msgstr "Súgó" -#: fpdb.pyw:1087 +#: fpdb.pyw:1086 msgid "Graphs" msgstr "Grafikonok" -#: fpdb.pyw:1137 +#: fpdb.pyw:1138 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " @@ -3095,15 +3160,15 @@ msgstr "" "Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " "fájlokba itt:\n" -#: fpdb.pyw:1166 +#: fpdb.pyw:1167 msgid "fpdb starting ..." msgstr "fpdb indítása ..." -#: fpdb.pyw:1215 +#: fpdb.pyw:1224 msgid "FPDB WARNING" msgstr "FPDB FIGYELMEZTETÉS" -#: fpdb.pyw:1234 +#: fpdb.pyw:1243 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" @@ -3114,7 +3179,7 @@ msgstr "" " Kattints az IGEN gombra a könyvtár létrehozásához, vagy a NEM gombra egy " "másik könyvtár választásához." -#: fpdb.pyw:1242 +#: fpdb.pyw:1251 msgid "" "WARNING: Unable to create hand output directory. Importing is not likely to " "work until this is fixed." @@ -3122,7 +3187,7 @@ msgstr "" "FIGYELEM: Nem sikerült a leosztásarchívum könyvtárának létrehozása. Az " "importálás valószínűleg nem fog működni." -#: fpdb.pyw:1247 +#: fpdb.pyw:1256 msgid "Select HH Output Directory" msgstr "Válaszd ki a leosztásarchívum könyvtárát" @@ -3134,11 +3199,11 @@ msgstr "Nem található a következő adatbázis-modul: MySQLdb" msgid "Import database module: psycopg2 not found" msgstr "Nem található a következő adatbázis-modul: psycopg2" -#: fpdb_import.py:178 +#: fpdb_import.py:189 msgid "Database ID for %s not found" msgstr "Azonosító nem található a(z) %s teremhez" -#: fpdb_import.py:180 +#: fpdb_import.py:191 msgid "" "[ERROR] More than 1 Database ID found for %s - Multiple currencies not " "implemented yet" @@ -3146,63 +3211,63 @@ msgstr "" "[ERROR] Egynél több azonosítót találtam a(z) %s teremhez - Termenként több " "pénznem még nem támogatott" -#: fpdb_import.py:216 +#: fpdb_import.py:227 msgid "Attempted to add non-directory: '%s' as an import directory" msgstr "Nem könyvtár ('%s') megadása importálási könyvtárként" -#: fpdb_import.py:226 +#: fpdb_import.py:237 msgid "Started at %s -- %d files to import. indexes: %s" msgstr "Elindítva: %s -- %d fájl importálása. Indexek: %s" -#: fpdb_import.py:235 +#: fpdb_import.py:246 msgid "No need to drop indexes." msgstr "Nem szükséges az indexek eldobása." -#: fpdb_import.py:254 +#: fpdb_import.py:265 msgid "writers finished already" msgstr "az írások már befejeződtek" -#: fpdb_import.py:257 +#: fpdb_import.py:268 msgid "waiting for writers to finish ..." msgstr "várakozás az írások befejeződésére ..." -#: fpdb_import.py:267 +#: fpdb_import.py:278 msgid " ... writers finished" msgstr " ... az írások befejeződtek" -#: fpdb_import.py:273 +#: fpdb_import.py:284 msgid "No need to rebuild indexes." msgstr "Nem szükséges az adatbázis indexeinek újraépítése." -#: fpdb_import.py:277 +#: fpdb_import.py:288 msgid "No need to rebuild hudcache." msgstr "Nem szükséges a HUD gyorstár újraépítése." -#: fpdb_import.py:302 +#: fpdb_import.py:313 msgid "sending finish msg qlen =" msgstr "befejező üzenet küldése; qlen =" -#: fpdb_import.py:428 fpdb_import.py:430 +#: fpdb_import.py:439 fpdb_import.py:441 msgid "Converting " msgstr "Konvertálás" -#: fpdb_import.py:466 +#: fpdb_import.py:477 msgid "Hand processed but empty" msgstr "A leosztás feldolgozva, de üres volt" -#: fpdb_import.py:479 +#: fpdb_import.py:490 msgid "fpdb_import: sending hand to hud" msgstr "fpdb_import: leosztás küldése a HUD számára" -#: fpdb_import.py:482 +#: fpdb_import.py:493 msgid "Failed to send hand to HUD: %s" msgstr "Nem sikerült a leosztás elküldése a HUD számára: %s" -#: fpdb_import.py:493 +#: fpdb_import.py:508 msgid "Unknown filter filter_name:'%s' in filter:'%s'" msgstr "Ismeretlen szűrő: filter_name:'%s' a '%s' szűrőben" -#: fpdb_import.py:504 +#: fpdb_import.py:519 msgid "" "Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge." "net so we can fix the problem." @@ -3210,11 +3275,11 @@ msgstr "" "%s számú hiba. Kérlek küldd el az ezt okozo leosztást az fpdb-main@lists." "sourceforge.net címre, hogy ki tudjuk javítani a hibát." -#: fpdb_import.py:505 +#: fpdb_import.py:520 msgid "Filename:" msgstr "Fájlnév:" -#: fpdb_import.py:506 +#: fpdb_import.py:521 msgid "" "Here is the first line of the hand so you can identify it. Please mention " "that the error was a ValueError:" @@ -3222,15 +3287,15 @@ msgstr "" "Itt az első sora a leosztásnak azonosítás céljából. Kérlek említsd majd meg, " "hogy a hiba ValueError volt:" -#: fpdb_import.py:508 +#: fpdb_import.py:523 msgid "Hand logged to hand-errors.txt" msgstr "A leosztás naplózva a hand-errors.txt fájlba" -#: fpdb_import.py:516 +#: fpdb_import.py:531 msgid "CLI for fpdb_import is now available as CliFpdb.py" msgstr "az fpdb_import már parancssorból is elérhető a CliFpdb.py segítségével" -#: interlocks.py:49 +#: interlocks.py:61 msgid "lock already held by:" msgstr "a zárolást már elvégezte:" @@ -3260,3 +3325,9 @@ msgstr "" "\n" "Nem találhatóak a GTK könyvtárak az útvonaladban - telepítsd a GTK-t, vagy " "állítsd be kézzel az útvonalat\n" + +#~ msgid "commit finished ok, i = " +#~ msgstr "a véglegesítés sikeresen befejeződött, i = " + +#~ msgid "Import" +#~ msgstr "Importálás" diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index d8ce15cbe6a39c34b60de45311d753f1dc766a79..ced7701f08ab78ef87e8c9878ed33e1c38362f9f 100644 GIT binary patch delta 11991 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 From cd70d491c6913a0d08da3b8be4f8b62309aff7d5 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 25 Aug 2010 13:42:00 +0200 Subject: [PATCH 270/641] remove duplicate example config section --- pyfpdb/HUD_config.xml.example | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index b21a4578..fca23a39 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -667,37 +667,6 @@ Left-Drag to Move" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From b8ad153f919ab48fa252acfce4955e2c89d1ba2b Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Wed, 25 Aug 2010 14:25:53 +0200 Subject: [PATCH 271/641] l10n: updated Hungarian translation --- pyfpdb/locale/fpdb-hu_HU.po | 68 ++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 784b8940..5b087003 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" "POT-Creation-Date: 2010-08-25 13:31+CEST\n" -"PO-Revision-Date: 2010-08-25 02:55+0200\n" +"PO-Revision-Date: 2010-08-25 14:25+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -120,28 +120,35 @@ msgstr "hibás érték az xalignment-ben - figyelmen kívül hagyás" #: Configuration.py:616 msgid "missing config section raw_hands" -msgstr "" +msgstr "hiányzó konfigurációs bekezdés: raw_hands" #: Configuration.py:622 msgid "Invalid config value for raw_hands.save, defaulting to \"error\"" msgstr "" +"Érvénytelen raw_hands.save beállítás, az alapértelmezett \"error\" használata" #: Configuration.py:629 msgid "Invalid config value for raw_hands.compression, defaulting to \"none\"" msgstr "" +"Érvénytelen raw_hands.compression beállítás, az alapértelmezett \"none\" " +"használata" #: Configuration.py:642 msgid "missing config section raw_tourneys" -msgstr "" +msgstr "hiányzó konfigurációs bekezdés: raw_tourneys" #: Configuration.py:648 msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" msgstr "" +"Érvénytelen raw_tourneys.save beállítás, az alapértelmezett \"error\" " +"használata" #: Configuration.py:655 msgid "" "Invalid config value for raw_tourneys.compression, defaulting to \"none\"" msgstr "" +"Érvénytelen raw_tourneys.compression beállítás, az alapértelmezett \"none\" " +"használata" #: Configuration.py:673 Configuration.py:674 msgid "Configuration file %s not found. Using defaults." @@ -810,7 +817,7 @@ msgstr "" #: GuiBulkImport.py:360 msgid "" "Output the pprinted version of the HandsPlayer hash for regresion testing" -msgstr "" +msgstr "A HandsPlayer hash kiíratása pprint-tel regresszió tesztelés céljából" #: GuiBulkImport.py:365 msgid "USAGE:" @@ -847,8 +854,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " -"%s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" +"s másodperc alatt - %.0f/mp" #: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" @@ -900,7 +907,7 @@ msgstr " kapcsolódás OK" #: GuiDatabase.py:291 msgid " not connected but no exception" -msgstr " nem kapcsolódott, de nincs hibaüzenet" +msgstr " nem kapcsolódott, de nem volt hibaüzenet" #: GuiDatabase.py:293 fpdb.pyw:905 msgid "" @@ -1299,11 +1306,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -1535,14 +1542,12 @@ msgstr "" "FpdbParseError: markStreets hívása meghiúsult: az első 100 karakter: '%s'" #: Hand.py:323 -#, fuzzy msgid "DEBUG: checkPlayerExists %s fail on hand number %s" -msgstr "DEBUG: checkPlayerExists %s játékos nem létezik." +msgstr "DEBUG: checkPlayerExists %s hiba a következő leosztásban: %s" #: Hand.py:324 -#, fuzzy msgid "checkPlayerExists: '%s fail on hand number %s" -msgstr "checkPlayerExists: '%s' játékos nem létezik." +msgstr "checkPlayerExists: '%s hiba a következő leosztásban: %s" #: Hand.py:405 msgid "%s %s calls %s" @@ -1697,7 +1702,7 @@ msgstr "HHC.start(follow): processHand meghiúsult: A hibaüzenet szövege: '%s' #: HandHistoryConverter.py:154 msgid "handsList is " -msgstr "" +msgstr "A handsList a következő: " #: HandHistoryConverter.py:165 msgid "HHC.start(): processHand failed: Exception msg: '%s'" @@ -1751,19 +1756,19 @@ msgstr "a fájl olvasása nem sikerült egyik listabeli kódolással sem" #: HandHistoryConverter.py:579 msgid " given TZ:" -msgstr "" +msgstr " adott időzóna:" #: HandHistoryConverter.py:579 msgid "raw time:" -msgstr "" +msgstr "nyers idő:" #: HandHistoryConverter.py:589 msgid "changeTimeZone: offset=" -msgstr "" +msgstr "changeTimeZone: offszet=" #: HandHistoryConverter.py:652 msgid "utcTime:" -msgstr "" +msgstr "utcTime:" #: HandHistoryConverter.py:685 msgid "Unable to create output directory %s for HHC!" @@ -1977,17 +1982,16 @@ msgid "readButton: not found" msgstr "readButton: nem található" #: OnGameToFpdb.py:250 -#, fuzzy msgid "readBlinds starting" -msgstr "HUD_main indítása\n" +msgstr "readBlinds indítása" #: OnGameToFpdb.py:254 msgid "re_postSB failed, hand=" -msgstr "" +msgstr "re_postSB nem sikerült, leosztás=" #: OnGameToFpdb.py:257 msgid "readBlinds in noSB exception" -msgstr "" +msgstr "readBlinds noSB-n belül hiba" #: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 msgid "reading antes" @@ -2858,18 +2862,16 @@ msgid "P" msgstr "P" #: fpdb.pyw:838 -#, fuzzy msgid "Ring _Player Stats (tabulated view, not on pgsql)" -msgstr "Kész_pénzes statisztikák (táblázat)" +msgstr "Kész_pénzes statisztikák (táblázat; Postgre-vel nem)" #: fpdb.pyw:839 msgid "T" msgstr "T" #: fpdb.pyw:839 -#, fuzzy msgid "_Tourney Player Stats (tabulated view, not on pgsql)" -msgstr "Versenyjá_tékos statisztikák (táblázat)" +msgstr "Versenyjá_tékos statisztikák (táblázat; Postgre-vel nem)" #: fpdb.pyw:840 msgid "Tourney _Viewer" @@ -2946,9 +2948,8 @@ msgid "CONFIG FILE ERROR" msgstr "KONFIGURÁCIÓS FÁJL HIBA" #: fpdb.pyw:876 -#, fuzzy msgid "Logfile is %s\n" -msgstr "A naplófájl " +msgstr "A naplófájl: %s\n" #: fpdb.pyw:878 msgid "Config file" @@ -2976,9 +2977,8 @@ msgstr "" "importálni." #: fpdb.pyw:903 -#, fuzzy msgid "Connected to SQLite: %s" -msgstr "Kapcsolódva a %(database)s SQLite adatbázishoz" +msgstr "Kapcsolódva az SQLite adatbázishoz: %s" #: fpdb.pyw:907 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " @@ -3139,8 +3139,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " -"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" +"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1079 msgid "Help" From de9d48cc6ad1f52ffa779a04f7388767a3822712 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Wed, 25 Aug 2010 14:55:37 +0200 Subject: [PATCH 272/641] remove menu entry for set handhistory archive directory --- pyfpdb/fpdb.pyw | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 6e034931..9ea632b0 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -786,7 +786,6 @@ class fpdb: - @@ -828,7 +827,6 @@ class fpdb: ('SaveProf', None, _('_Save Profile (todo)'), _('S'), 'Save your profile', self.dia_save_profile), ('Preferences', None, _('Pre_ferences'), _('F'), 'Edit your preferences', self.dia_preferences), ('import', None, _('_Import')), - ('sethharchive', None, _('_Set HandHistory Archive Directory'), None, 'Set HandHistory Archive Directory', self.select_hhArchiveBase), ('bulkimp', None, _('_Bulk Import'), _('B'), 'Bulk Import', self.tab_bulk_import), ('imapimport', None, _('_Import through eMail/IMAP'), _('I'), 'Import through eMail/IMAP', self.tab_imap_import), ('viewers', None, _('_Viewers')), @@ -1252,16 +1250,6 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an elif response == gtk.RESPONSE_NO: self.select_hhArchiveBase() - def select_hhArchiveBase(self, widget=None): - fc = gtk.FileChooserDialog(title=_("Select HH Output Directory"), parent=None, action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_OPEN,gtk.RESPONSE_OK), backend=None) - fc.run() - # TODO: We need to put in a Cancel button, and handle if the user presses that or the "Close" box without selecting anything as a cancel, and return to the prior setting - #self.warning_box("You selected %s" % fc.get_filename()) - self.config.set_hhArchiveBase(fc.get_filename()) - self.config.save() - self.load_profile() # we can't do this at the end of this func because load_profile calls this func - fc.destroy() # TODO: loop this to make sure we get valid data back from it, because the open directory thing in GTK lets you select files and not select things and other stupid bullshit - def main(self): gtk.main() return 0 From f07a16cee462d7606057ee4b03d0be7edaa9bfb1 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Wed, 25 Aug 2010 23:17:30 +0200 Subject: [PATCH 273/641] ebuild: added support for IUSE="linguas_hu" For now we just symlinking the mo file to its proper place under /usr/share/locale/hu --- packaging/gentoo/current_testing.ebuild | 63 +++++++++++++----------- packaging/gentoo/fpdb-9999.ebuild | 65 +++++++++++++------------ 2 files changed, 69 insertions(+), 59 deletions(-) diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index e2a9c67c..73bedd02 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -17,44 +17,49 @@ SLOT="0" KEYWORDS="~amd64 ~x86" #note: this should work on other architectures too, please send me your experiences -IUSE="graph mysql postgres sqlite" +IUSE="graph mysql postgres sqlite linguas_hu" RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" DEPEND="${RDEPEND}" src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb - doins readme.txt + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + if use linguas_hu; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo + fi - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + doins readme.txt - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} + + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs } pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." } diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index a2e28197..b3bfa9dc 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -18,48 +18,53 @@ SLOT="0" KEYWORDS="" #note: this should work on other architectures too, please send me your experiences -IUSE="graph mysql postgres sqlite" +IUSE="graph mysql postgres sqlite linguas_hu" RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" DEPEND="${RDEPEND}" src_unpack() { - git_src_unpack + git_src_unpack } src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb - doins readme.txt + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + if use linguas_hu; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo + fi - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + doins readme.txt - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} + + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs } pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." } From 3272d0c7a956cabc85c62e008fe6f9f73d6ee8a2 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Wed, 25 Aug 2010 23:56:02 +0200 Subject: [PATCH 274/641] Anonymised and cleaned up regression test files for PartyPoker The "blind is forced allin" situation file has been splitted into two files as the sample hands were played on different days and on different limits. --- ...01-0.02-20100731.bigBlindIsForcedAllIn.txt | 33 ++++++++++ ...-0.01-0.02-20100731.blindIsForcedAllIn.txt | 63 ------------------- ...-0.04-20100804.smallBlindIsForcedAllIn.txt | 28 +++++++++ 3 files changed, 61 insertions(+), 63 deletions(-) create mode 100644 pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.bigBlindIsForcedAllIn.txt delete mode 100644 pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.blindIsForcedAllIn.txt create mode 100644 pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.02-0.04-20100804.smallBlindIsForcedAllIn.txt diff --git a/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.bigBlindIsForcedAllIn.txt b/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.bigBlindIsForcedAllIn.txt new file mode 100644 index 00000000..89c06d75 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.bigBlindIsForcedAllIn.txt @@ -0,0 +1,33 @@ +Game #9485557849 starts. + +#Game No : 9485557849 +***** Hand History for Game 9485557849 ***** +$0.80 USD NL Texas Hold'em - Saturday, July 31, 13:52:16 EDT 2010 +Table 20BB Min Speed #1770998 (Real Money) +Seat 1 is the button +Total number of players : 4/9 +Seat 3: Player1 ( $1.64 USD ) +Seat 5: Player2 ( $0.01 USD ) +Seat 9: Player3 ( $1.02 USD ) +Seat 1: Player4 ( $1.20 USD ) +Player1 posts small blind [$0.01 USD]. +Player2 posts big blind [$0.01 USD]. +** Dealing down cards ** +Dealt to Player1 [ 8h Kc ] +Player3 folds +Player4 calls [$0.02 USD] +Player1 calls [$0.01 USD] +** Dealing Flop ** [ Td, 7c, 9h ] +Player1 checks +Player4 checks +** Dealing Turn ** [ 3h ] +Player1 checks +Player4 checks +** Dealing River ** [ Jc ] +Player1 bets [$0.04 USD] +Player4 folds +Player1 shows [ 8h, Kc ]a straight, Seven to Jack. +Player2 doesn't show [ Ts, Jd ]two pairs, Jacks and Tens. +Player1 wins $0.06 USD from the side pot 1 with a straight, Seven to Jack. +Player1 wins $0.03 USD from the main pot with a straight, Seven to Jack. +Player2 has left the table. diff --git a/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.blindIsForcedAllIn.txt b/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.blindIsForcedAllIn.txt deleted file mode 100644 index 489dbe5e..00000000 --- a/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.01-0.02-20100731.blindIsForcedAllIn.txt +++ /dev/null @@ -1,63 +0,0 @@ -Game #9485557849 starts. - -#Game No : 9485557849 -***** Hand History for Game 9485557849 ***** -$0.80 USD NL Texas Hold'em - Saturday, July 31, 13:52:16 EDT 2010 -Table 20BB Min Speed #1770998 (Real Money) -Seat 1 is the button -Total number of players : 4/9 -Seat 3: FErki84 ( $1.64 USD ) -Seat 5: Vandercasses ( $0.01 USD ) -Seat 9: jeremyho888 ( $1.02 USD ) -Seat 1: sergeodem ( $1.20 USD ) -FErki84 posts small blind [$0.01 USD]. -Vandercasses posts big blind [$0.01 USD]. -** Dealing down cards ** -Dealt to FErki84 [ 8h Kc ] -jeremyho888 folds -sergeodem calls [$0.02 USD] -FErki84 calls [$0.01 USD] -** Dealing Flop ** [ Td, 7c, 9h ] -FErki84 checks -sergeodem checks -** Dealing Turn ** [ 3h ] -FErki84 checks -sergeodem checks -** Dealing River ** [ Jc ] -FErki84 bets [$0.04 USD] -sergeodem folds -FErki84 shows [ 8h, Kc ]a straight, Seven to Jack. -Vandercasses doesn't show [ Ts, Jd ]two pairs, Jacks and Tens. -FErki84 wins $0.06 USD from the side pot 1 with a straight, Seven to Jack. -FErki84 wins $0.03 USD from the main pot with a straight, Seven to Jack. -Vandercasses has left the table. - -Game #9498788316 starts. - -#Game No : 9498788316 -***** Hand History for Game 9498788316 ***** -$1.60 USD NL Texas Hold'em - Wednesday, August 04, 15:02:33 EDT 2010 -Table 20BB Min #1847547 (No DP) (Real Money) -Seat 2 is the button -Total number of players : 5/6 -Seat 5: CepguTbIu999 ( $1.60 USD ) -Seat 1: Daytona_955 ( $2.45 USD ) -Seat 4: FErki84 ( $2.18 USD ) -Seat 2: anjl2009 ( $2.80 USD ) -Seat 3: lukeman2 ( $0.01 USD ) -lukeman2 posts small blind [$0.01 USD]. -FErki84 posts big blind [$0.04 USD]. -** Dealing down cards ** -Dealt to FErki84 [ 6s 2c ] -CepguTbIu999 folds -Daytona_955 folds -anjl2009 folds -** Dealing Flop ** [ 9d, Ah, 3h ] -** Dealing Turn ** [ Js ] -** Dealing River ** [ Kc ] -lukeman2 shows [ 5h, 5s ]a pair of Fives. -FErki84 shows [ 6s, 2c ]high card Ace. -FErki84 wins $0.03 USD from the side pot 1 with high card, Ace. -lukeman2 wins $0.02 USD from the main pot with a pair of Fives. -lukeman2 has left the table. - diff --git a/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.02-0.04-20100804.smallBlindIsForcedAllIn.txt b/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.02-0.04-20100804.smallBlindIsForcedAllIn.txt new file mode 100644 index 00000000..d59ab400 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/PartyPoker/Flop/NLHE-USD-0.02-0.04-20100804.smallBlindIsForcedAllIn.txt @@ -0,0 +1,28 @@ +Game #9498788316 starts. + +#Game No : 9498788316 +***** Hand History for Game 9498788316 ***** +$1.60 USD NL Texas Hold'em - Wednesday, August 04, 15:02:33 EDT 2010 +Table 20BB Min #1847547 (No DP) (Real Money) +Seat 2 is the button +Total number of players : 5/6 +Seat 5: Player1 ( $1.60 USD ) +Seat 1: Player2 ( $2.45 USD ) +Seat 4: Player3 ( $2.18 USD ) +Seat 2: Player4 ( $2.80 USD ) +Seat 3: Player5 ( $0.01 USD ) +Player5 posts small blind [$0.01 USD]. +Player3 posts big blind [$0.04 USD]. +** Dealing down cards ** +Dealt to Player3 [ 6s 2c ] +Player1 folds +Player2 folds +Player4 folds +** Dealing Flop ** [ 9d, Ah, 3h ] +** Dealing Turn ** [ Js ] +** Dealing River ** [ Kc ] +Player5 shows [ 5h, 5s ]a pair of Fives. +Player3 shows [ 6s, 2c ]high card Ace. +Player3 wins $0.03 USD from the side pot 1 with high card, Ace. +Player5 wins $0.02 USD from the main pot with a pair of Fives. +Player5 has left the table. From 6a823a430c2acbbfe6d64b929c164bb49556663c Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 26 Aug 2010 10:27:40 +0800 Subject: [PATCH 275/641] Hand: Add PKR to sites lookup --- pyfpdb/Hand.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 0973141f..d90a8d8c 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -58,7 +58,7 @@ class Hand(object): LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'} SYMBOL = {'USD': '$', 'EUR': u'$', 'T$': '', 'play': ''} MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'} - SITEIDS = {'Fulltilt':1, 'PokerStars':2, 'Everleaf':3, 'Win2day':4, 'OnGame':5, 'UltimateBet':6, 'Betfair':7, 'Absolute':8, 'PartyPoker':9, 'Partouche':10, 'Carbon':11 } + SITEIDS = {'Fulltilt':1, 'PokerStars':2, 'Everleaf':3, 'Win2day':4, 'OnGame':5, 'UltimateBet':6, 'Betfair':7, 'Absolute':8, 'PartyPoker':9, 'Partouche':10, 'Carbon':11, 'PKR':12 } def __init__(self, config, sitename, gametype, handText, builtFrom = "HHC"): From 159384db17007e776ea5fced27f5b2196e490085 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 26 Aug 2010 10:28:37 +0800 Subject: [PATCH 276/641] PKR: Add a PKR HHC Doesn't actualy work as yet, but the primary regexes are done. --- pyfpdb/PkrToFpdb.py | 394 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 394 insertions(+) create mode 100755 pyfpdb/PkrToFpdb.py diff --git a/pyfpdb/PkrToFpdb.py b/pyfpdb/PkrToFpdb.py new file mode 100755 index 00000000..56697210 --- /dev/null +++ b/pyfpdb/PkrToFpdb.py @@ -0,0 +1,394 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 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 sys +from HandHistoryConverter import * + +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + + +class Pkr(HandHistoryConverter): + + # Class Variables + + sitename = "PKR" + filetype = "text" + codepage = ("utf8", "cp1252") + siteId = 12 # Needs to match id entry in Sites database + + mixes = { 'HORSE': 'horse', '8-Game': '8game', 'HOSE': 'hose'} # Legal mixed games + sym = {'USD': "\$"} # ADD Euro, Sterling, etc HERE + substitutions = { + 'LEGAL_ISO' : "USD", # legal ISO currency codes + 'LS' : "\$|" # legal currency symbols - Euro(cp1252, utf-8) + } + + limits = { 'NO LIMIT':'nl', 'POT LIMIT':'pl', 'LIMIT':'fl' } + games = { # base, category + "HOLD'EM" : ('hold','holdem'), + 'FIXMEOmaha' : ('hold','omahahi'), + 'FIXMEOmaha Hi/Lo' : ('hold','omahahilo'), + 'FIXME5 Card Draw' : ('draw','fivedraw') + } + currencies = { u'€':'EUR', '$':'USD', '':'T$' } + + # Static regexes + re_GameInfo = re.compile(u""" + Table\s\#\d+\s\-\s(?P
[a-zA-Z\ \d]+)\s + Starting\sHand\s\#(?P[0-9]+)\s + Start\stime\sof\shand:\s(?P.*)\s + Last\sHand\s\#[0-9]+\s + Game\sType:\s(?PHOLD'EM|5\sCard\sDraw)\s + Limit\sType:\s(?PNO\sLIMIT|LIMIT|POT\sLIMIT)\s + Table\sType\:\sRING\s + Money\sType:\sREAL\sMONEY\s + Blinds\sare\snow\s(?P%(LS)s|)? + (?P[.0-9]+)/(%(LS)s)? + (?P[.0-9]+) + """ % substitutions, re.MULTILINE|re.VERBOSE) + + re_PlayerInfo = re.compile(u""" + ^Seat\s(?P[0-9]+):\s + (?P.*)\s + \((%(LS)s)?(?P[.0-9]+)\sin\schips\)""" % substitutions, + re.MULTILINE|re.VERBOSE) + + re_HandInfo = re.compile(""" + ^Table\s\'(?P
[-\ a-zA-Z\d]+)\'\s + ((?P\d+)-max\s)? + (?P\(Play\sMoney\)\s)? + (Seat\s\#(?P
[ a-zA-Z]+) - \$?(?P[.0-9]+)/\$?(?P[.0-9]+) - (?P.*) - (?P
[0-9]+):(?P[0-9]+) ET - (?P[0-9]+)/(?P[0-9]+)/(?P[0-9]+)Table (?P
[ a-zA-Z]+)\nSeat (?P
[-\ a-zA-Z\d]+)\'\s @@ -97,28 +97,24 @@ class Pkr(HandHistoryConverter): re_DateTime = re.compile("""(?P[0-9]{4})\/(?P[0-9]{2})\/(?P[0-9]{2})[\- ]+(?P[0-9]+):(?P[0-9]+):(?P[0-9]+)""", re.MULTILINE) def compilePlayerRegexs(self, hand): - print "DEBUG: compilePlayerRegexs" players = set([player[1] for player in hand.players]) if not players <= self.compiledPlayers: # x <= y means 'x is subset of y' # we need to recompile the player regexs. -# TODO: should probably rename re_HeroCards and corresponding method, -# since they are used to find all cards on lines starting with "Dealt to:" -# They still identify the hero. self.compiledPlayers = players player_re = "(?P" + "|".join(map(re.escape, players)) + ")" subst = {'PLYR': player_re, 'CUR': self.sym[hand.gametype['currency']]} log.debug("player_re: " + player_re) - self.re_PostSB = re.compile(r"^%(PLYR)s: posts small blind %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_PostBB = re.compile(r"^%(PLYR)s: posts big blind %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_PostBoth = re.compile(r"^%(PLYR)s: posts small \& big blinds %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_HeroCards = re.compile(r"^Dealt to %(PLYR)s(?: \[(?P.+?)\])?( \[(?P.+?)\])" % subst, re.MULTILINE) - self.re_Action = re.compile(r""" - ^%(PLYR)s:(?P\sbets|\schecks|\sraises|\scalls|\sfolds|\sdiscards|\sstands\spat) - (\s(%(CUR)s)?(?P[.\d]+))?(\sto\s%(CUR)s(?P[.\d]+))? # the number discarded goes in - (\scards?(\s\[(?P.+?)\])?)?""" - % subst, re.MULTILINE|re.VERBOSE) + self.re_PostSB = re.compile(r"^%(PLYR)s posts small blind %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) + # FIXME: Sionel posts $0.04 is a second big blind in a different format. + self.re_PostBB = re.compile(r"^%(PLYR)s posts big blind %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) + self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) + self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) + self.re_PostBoth = re.compile(r"^%(PLYR)s: posts small \& big blinds %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) + self.re_HeroCards = re.compile(r"^Dealing( \[(?P.+?)\])?( \[(?P.+?)\]) to %(PLYR)s" % subst, re.MULTILINE) + self.re_Action = re.compile(r""" + ^%(PLYR)s(?P\sbets|\schecks|\sraises|\scalls|\sfolds)(\sto)? + (\s(%(CUR)s)?(?P[.\d]+))? + """ % subst, re.MULTILINE|re.VERBOSE) self.re_ShowdownAction = re.compile(r"^%s: shows \[(?P.*)\]" % player_re, re.MULTILINE) self.re_CollectPot = re.compile(r"Seat (?P[0-9]+): %(PLYR)s (\(button\) |\(small blind\) |\(big blind\) |\(button\) \(small blind\) )?(collected|showed \[.*\] and won) \(%(CUR)s(?P[.\d]+)\)(, mucked| with.*|)" % subst, re.MULTILINE) self.re_sitsOut = re.compile("^%s sits out" % player_re, re.MULTILINE) @@ -150,7 +146,7 @@ class Pkr(HandHistoryConverter): raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) mg = m.groupdict() - print "DEBUG: %s" % mg + #print "DEBUG: %s" % mg if 'LIMIT' in mg: info['limitType'] = self.limits[mg['LIMIT']] @@ -341,7 +337,7 @@ class Pkr(HandHistoryConverter): for action in m: acts = action.groupdict() if action.group('ATYPE') == ' raises': - hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') ) + hand.addRaiseTo( street, action.group('PNAME'), action.group('BET') ) elif action.group('ATYPE') == ' calls': hand.addCall( street, action.group('PNAME'), action.group('BET') ) elif action.group('ATYPE') == ' bets': From 264f4da36554e2881a81ce2662f9b150501031d3 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Thu, 26 Aug 2010 16:16:34 +0200 Subject: [PATCH 278/641] l10n: cleaned up Hungarian menu shortcuts --- pyfpdb/locale/fpdb-hu_HU.po | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 5b087003..1d454451 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" "POT-Creation-Date: 2010-08-25 13:31+CEST\n" -"PO-Revision-Date: 2010-08-25 14:25+0200\n" +"PO-Revision-Date: 2010-08-26 01:40+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -2779,7 +2779,7 @@ msgstr "" #: fpdb.pyw:825 msgid "_Main" -msgstr "_Főmenü" +msgstr "Fő_menü" #: fpdb.pyw:826 fpdb.pyw:854 msgid "_Quit" @@ -2803,7 +2803,7 @@ msgstr "Profil menté_se (todo)" #: fpdb.pyw:829 msgid "F" -msgstr "F" +msgstr "B" #: fpdb.pyw:829 msgid "Pre_ferences" @@ -2819,11 +2819,11 @@ msgstr "Leo_sztásarchívum könyvtára" #: fpdb.pyw:832 msgid "B" -msgstr "B" +msgstr "I" #: fpdb.pyw:833 msgid "I" -msgstr "I" +msgstr "E" #: fpdb.pyw:833 msgid "_Import through eMail/IMAP" From 6d2de998c861c8aa2bd132f11e4ec5aff7ebc550 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 27 Aug 2010 00:09:18 +0800 Subject: [PATCH 279/641] FTP: fix type hand.maxSeats to maxseats --- pyfpdb/FulltiltToFpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index a3526ca0..4b5fbcfd 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -261,7 +261,7 @@ class Fulltilt(HandHistoryConverter): if special == "KO": hand.isKO = True if special == "Head's Up" or special == "Heads Up": - hand.maxSeats = 2 + hand.maxseats = 2 if re.search("Matrix", special): hand.isMatrix = True if special == "Shootout": From 28aaa5366d1895de6fa094e92bd5137e1f62d76b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 26 Aug 2010 18:17:22 +0200 Subject: [PATCH 280/641] revert recent change of Hand.py to fix FTP --- pyfpdb/Hand.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 0973141f..aa048ae4 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -77,7 +77,7 @@ class Hand(object): self.dbid_gt = 0 self.tablename = "" self.hero = "" - self.maxseats = 0 + self.maxseats = None self.counted_seats = 0 self.buttonpos = 0 From 93573ac51941efe51375265d07f8a5e0cbd721f6 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 26 Aug 2010 18:19:58 +0200 Subject: [PATCH 281/641] start of german translation --- pyfpdb/locale/fpdb-de_DE.po | 41 +++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/pyfpdb/locale/fpdb-de_DE.po b/pyfpdb/locale/fpdb-de_DE.po index 38f761df..5952cbbb 100644 --- a/pyfpdb/locale/fpdb-de_DE.po +++ b/pyfpdb/locale/fpdb-de_DE.po @@ -1,20 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION -# FIRST AUTHOR , YEAR. -# +# Steffen Schaumburg , 2010. msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" "POT-Creation-Date: 2010-08-25 13:31+CEST\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2010-08-25 18:41+0200\n" "Last-Translator: Steffen Schaumburg \n" -"Language-Team: de_DE \n" +"Language-Team: Fpdb\n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: UTF-8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.6.1\n" "Generated-By: pygettext.py 1.5\n" - #: Anonymise.py:55 msgid "Could not find file %s" msgstr "" @@ -2478,7 +2479,7 @@ msgstr "" #: fpdb.pyw:353 msgid "Database Statistics" -msgstr "" +msgstr "Datenbankstatistiken" #: fpdb.pyw:362 msgid "HUD Configurator - choose category" @@ -2588,39 +2589,40 @@ msgstr "" #: fpdb.pyw:825 msgid "_Main" -msgstr "" +msgstr "_Hauptmenü" #: fpdb.pyw:826 fpdb.pyw:854 msgid "_Quit" -msgstr "" +msgstr "_Beenden" #: fpdb.pyw:827 +#, fuzzy msgid "L" -msgstr "" +msgstr "L" #: fpdb.pyw:827 msgid "_Load Profile (broken)" -msgstr "" +msgstr "Profil _Laden (kaputt)" #: fpdb.pyw:828 msgid "S" -msgstr "" +msgstr "S" #: fpdb.pyw:828 msgid "_Save Profile (todo)" -msgstr "" +msgstr "Profil _Speichern (nicht fertig)" #: fpdb.pyw:829 msgid "F" -msgstr "" +msgstr "F" #: fpdb.pyw:829 msgid "Pre_ferences" -msgstr "" +msgstr "_Einstellungen" #: fpdb.pyw:830 msgid "_Import" -msgstr "" +msgstr "_Importieren" #: fpdb.pyw:831 msgid "_Set HandHistory Archive Directory" @@ -2628,15 +2630,15 @@ msgstr "" #: fpdb.pyw:832 msgid "B" -msgstr "" +msgstr "B" #: fpdb.pyw:833 msgid "I" -msgstr "" +msgstr "I" #: fpdb.pyw:833 msgid "_Import through eMail/IMAP" -msgstr "" +msgstr "_Import per eMail/IMAP" #: fpdb.pyw:834 msgid "_Viewers" @@ -2720,7 +2722,7 @@ msgstr "" #: fpdb.pyw:848 msgid "_Statistics" -msgstr "" +msgstr "_Statistiken" #: fpdb.pyw:849 msgid "Dump Database to Textfile (takes ALOT of time)" @@ -3039,4 +3041,3 @@ msgid "" "\n" "no gtk directories found in your path - install gtk or edit the path manually\n" msgstr "" - From 76f60e3592d51bd049366df9b2e92f78d29097e7 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 26 Aug 2010 18:32:01 +0200 Subject: [PATCH 282/641] include fpdb version in GUI version listing --- pyfpdb/fpdb.pyw | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 9ea632b0..1c1ba4cb 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -264,7 +264,8 @@ class fpdb: , ('numpy', numpy_version) , ('sqlite3', sqlite3_version) , ('sqlite', sqlite_version) - , ('database', self.settings['db-server'] + db_version) + , ('fpdb version', VERSION) + , ('database used', self.settings['db-server']) ] versions = gtk.TextBuffer() w = 20 # width used for module names and version numbers From 8222fa93282a8868dd01d8942a24c3fc18992a26 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 26 Aug 2010 18:54:15 +0200 Subject: [PATCH 283/641] l10n: update all po/mo files, scripts --- pyfpdb/locale/create-mo-files.sh | 1 + pyfpdb/locale/fpdb-de_DE.po | 519 +++++++++++++++------------ pyfpdb/locale/fpdb-en_GB.po | 259 +++++++------ pyfpdb/locale/fpdb-hu_HU.po | 267 +++++++------- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 62387 -> 64382 bytes pyfpdb/locale/update-po-files.sh | 1 + 6 files changed, 550 insertions(+), 497 deletions(-) diff --git a/pyfpdb/locale/create-mo-files.sh b/pyfpdb/locale/create-mo-files.sh index 4b9d1dc9..5df25bcb 100755 --- a/pyfpdb/locale/create-mo-files.sh +++ b/pyfpdb/locale/create-mo-files.sh @@ -1,3 +1,4 @@ cd .. python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po +python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po diff --git a/pyfpdb/locale/fpdb-de_DE.po b/pyfpdb/locale/fpdb-de_DE.po index 5952cbbb..9d7032b7 100644 --- a/pyfpdb/locale/fpdb-de_DE.po +++ b/pyfpdb/locale/fpdb-de_DE.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-25 13:31+CEST\n" +"POT-Creation-Date: 2010-08-26 18:52+CEST\n" "PO-Revision-Date: 2010-08-25 18:41+0200\n" "Last-Translator: Steffen Schaumburg \n" "Language-Team: Fpdb\n" @@ -57,18 +57,15 @@ msgid "fpdb card encoding(same as pokersource)" msgstr "" #: Charset.py:45 Charset.py:60 Charset.py:75 Charset.py:86 Charset.py:94 -msgid "" -"Could not convert: \"%s\"\n" +msgid "Could not convert: \"%s\"\n" msgstr "" #: Charset.py:48 Charset.py:63 Charset.py:78 -msgid "" -"Could not encode: \"%s\"\n" +msgid "Could not encode: \"%s\"\n" msgstr "" #: Configuration.py:113 Configuration.py:126 -msgid "" -"Config file has been created at %s.\n" +msgid "Config file has been created at %s.\n" msgstr "" #: Configuration.py:125 @@ -79,13 +76,11 @@ msgid "" msgstr "" #: Configuration.py:131 Configuration.py:132 -msgid "" -"Error copying .example file, cannot fall back. Exiting.\n" +msgid "Error copying .example file, cannot fall back. Exiting.\n" msgstr "" #: Configuration.py:136 Configuration.py:137 -msgid "" -"No %s found, cannot fall back. Exiting.\n" +msgid "No %s found, cannot fall back. Exiting.\n" msgstr "" #: Configuration.py:167 @@ -101,7 +96,9 @@ msgid "Creating directory: '%s'" msgstr "" #: Configuration.py:205 -msgid "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're not on a Mac, please report this problem." +msgid "" +"Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're " +"not on a Mac, please report this problem." msgstr "" #: Configuration.py:303 @@ -137,7 +134,8 @@ msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" msgstr "" #: Configuration.py:655 -msgid "Invalid config value for raw_tourneys.compression, defaulting to \"none\"" +msgid "" +"Invalid config value for raw_tourneys.compression, defaulting to \"none\"" msgstr "" #: Configuration.py:673 Configuration.py:674 @@ -335,7 +333,8 @@ msgid "Dropping sqlite index " msgstr "" #: Database.py:1307 -msgid "Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" +msgid "" +"Fpdb only supports MySQL, Postgres and SQLITE, what are you trying to use?" msgstr "" #: Database.py:1321 Database.py:1361 @@ -582,11 +581,11 @@ msgstr "" msgid " Clear Dates " msgstr "" -#: Filters.py:940 fpdb.pyw:721 +#: Filters.py:940 fpdb.pyw:722 msgid "Pick a date" msgstr "" -#: Filters.py:946 fpdb.pyw:727 +#: Filters.py:946 fpdb.pyw:728 msgid "Done" msgstr "" @@ -671,7 +670,9 @@ msgid "Importing..." msgstr "" #: GuiBulkImport.py:117 -msgid "GuiBulkImport.load done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" +msgid "" +"GuiBulkImport.load done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: " +"%d in %s seconds - %.0f/sec" msgstr "" #: GuiBulkImport.py:131 @@ -730,7 +731,7 @@ msgstr "" msgid "Drop HudCache:" msgstr "" -#: GuiBulkImport.py:297 fpdb.pyw:832 +#: GuiBulkImport.py:297 fpdb.pyw:831 msgid "_Bulk Import" msgstr "" @@ -763,11 +764,14 @@ msgid "Print some useful one liners" msgstr "" #: GuiBulkImport.py:358 -msgid "Do the required conversion for Stars Archive format (ie. as provided by support" +msgid "" +"Do the required conversion for Stars Archive format (ie. as provided by " +"support" msgstr "" #: GuiBulkImport.py:360 -msgid "Output the pprinted version of the HandsPlayer hash for regresion testing" +msgid "" +"Output the pprinted version of the HandsPlayer hash for regresion testing" msgstr "" #: GuiBulkImport.py:365 @@ -779,7 +783,8 @@ msgid "PokerStars converter: ./GuiBulkImport.py -c PokerStars -f filename" msgstr "" #: GuiBulkImport.py:367 -msgid "Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" +msgid "" +"Full Tilt converter: ./GuiBulkImport.py -c \"Full Tilt Poker\" -f filename" msgstr "" #: GuiBulkImport.py:368 @@ -799,7 +804,9 @@ msgid "-q is deprecated. Just use \"-f filename\" instead" msgstr "" #: GuiBulkImport.py:409 -msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" +msgid "" +"GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " +"in %s seconds - %.0f/sec" msgstr "" #: GuiDatabase.py:106 GuiLogView.py:96 @@ -854,20 +861,26 @@ msgstr "" msgid " not connected but no exception" msgstr "" -#: GuiDatabase.py:293 fpdb.pyw:905 -msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" +#: GuiDatabase.py:293 fpdb.pyw:904 +msgid "" +"MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" #: GuiDatabase.py:297 -msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started" +msgid "" +"MySQL client reports: 2002 or 2003 error. Unable to connect - Please check " +"that the MySQL service has been started" msgstr "" -#: GuiDatabase.py:301 fpdb.pyw:910 -msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" +#: GuiDatabase.py:301 fpdb.pyw:909 +msgid "" +"Postgres Server reports: Access denied. Are your permissions set correctly?" msgstr "" #: GuiDatabase.py:304 -msgid "Postgres client reports: Unable to connect - Please check that the Postgres service has been started" +msgid "" +"Postgres client reports: Unable to connect - Please check that the Postgres " +"service has been started" msgstr "" #: GuiDatabase.py:321 @@ -992,11 +1005,14 @@ msgid "Finished import without error." msgstr "" #: GuiImapFetcher.py:106 -msgid "Login to mailserver failed: please check mailserver, username and password" +msgid "" +"Login to mailserver failed: please check mailserver, username and password" msgstr "" #: GuiImapFetcher.py:109 -msgid "Could not connect to mailserver: check mailserver and use SSL settings and internet connectivity" +msgid "" +"Could not connect to mailserver: check mailserver and use SSL settings and " +"internet connectivity" msgstr "" #: GuiImapFetcher.py:119 @@ -1051,7 +1067,7 @@ msgstr "" msgid "Test Preferences Dialog" msgstr "" -#: GuiPrefs.py:192 fpdb.pyw:296 +#: GuiPrefs.py:192 fpdb.pyw:297 msgid "Preferences" msgstr "" @@ -1121,11 +1137,15 @@ msgid "Display _Player" msgstr "" #: GuiTourneyViewer.py:77 -msgid "Tournament not found - please ensure you imported it and selected the correct site" +msgid "" +"Tournament not found - please ensure you imported it and selected the " +"correct site" msgstr "" #: GuiTourneyViewer.py:105 -msgid "Player or tourney not found - please ensure you imported it and selected the correct site" +msgid "" +"Player or tourney not found - please ensure you imported it and selected the " +"correct site" msgstr "" #: GuiTourneyViewer.py:119 @@ -1151,11 +1171,10 @@ msgid "HUD_main starting: using db name = %s" msgstr "" #: HUD_main.pyw:95 -msgid "" -"Note: error output is being diverted to:\n" +msgid "Note: error output is being diverted to:\n" msgstr "" -#: HUD_main.pyw:96 fpdb.pyw:1139 +#: HUD_main.pyw:96 fpdb.pyw:1138 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1170,8 +1189,7 @@ msgid "Any major error will be reported there _only_." msgstr "" #: HUD_main.pyw:101 -msgid "" -"HUD_main: starting ...\n" +msgid "HUD_main: starting ...\n" msgstr "" #: HUD_main.pyw:114 HUD_run_me.py:62 @@ -1195,13 +1213,11 @@ msgid "HUD_main.read_stdin: hand processing starting ..." msgstr "" #: HUD_main.pyw:275 -msgid "" -"hud_dict[%s] was not found\n" +msgid "hud_dict[%s] was not found\n" msgstr "" #: HUD_main.pyw:276 -msgid "" -"will not send hand\n" +msgid "will not send hand\n" msgstr "" #: HUD_main.pyw:310 @@ -1209,22 +1225,21 @@ msgid "HUD create: table name %s not found, skipping." msgstr "" #: HUD_main.pyw:318 -msgid "" -"Table \"%s\" no longer exists\n" +msgid "Table \"%s\" no longer exists\n" msgstr "" #: HUD_main.pyw:321 -msgid "HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f)" +msgid "" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f)" msgstr "" #: HUD_run_me.py:45 -msgid "" -"HUD_main starting\n" +msgid "HUD_main starting\n" msgstr "" #: HUD_run_me.py:51 TournamentTracker.py:317 -msgid "" -"Using db name = %s\n" +msgid "Using db name = %s\n" msgstr "" #: Hand.py:150 @@ -1480,11 +1495,14 @@ msgid "addShownCards %s hole=%s all=%s" msgstr "" #: Hand.py:645 -msgid "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, expecting datetime.date object, received:" +msgid "" +"*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, " +"expecting datetime.date object, received:" msgstr "" #: Hand.py:646 -msgid "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" +msgid "" +"*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" #: Hand.py:647 @@ -1492,7 +1510,9 @@ msgid "*** Game String:" msgstr "" #: Hand.py:701 -msgid "*** Parse error reading blinds (check compilePlayerRegexs as a likely culprit)" +msgid "" +"*** Parse error reading blinds (check compilePlayerRegexs as a likely " +"culprit)" msgstr "" #: Hand.py:728 @@ -1560,7 +1580,9 @@ msgid "*** RIVER ***" msgstr "" #: Hand.py:1449 -msgid "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should be impossible for anyone who is not a hero" +msgid "" +"join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should " +"be impossible for anyone who is not a hero" msgstr "" #: Hand.py:1450 @@ -1783,8 +1805,7 @@ msgid "Updating config file" msgstr "" #: Hud.py:552 -msgid "" -"No layout found for %d-max games for site %s\n" +msgid "No layout found for %d-max games for site %s\n" msgstr "" #: Hud.py:566 @@ -1798,8 +1819,7 @@ msgid "error is %s" msgstr "" #: Hud.py:574 -msgid "" -"Error finding actual seat.\n" +msgid "Error finding actual seat.\n" msgstr "" #: Hud.py:590 @@ -1809,7 +1829,10 @@ msgid "" msgstr "" #: Hud.py:639 -msgid "KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric" +msgid "" +"KeyError at the start of the for loop in update in hud_main. How this can " +"possibly happen is totally beyond my comprehension. Your HUD may be about to " +"get really weird. -Eric" msgstr "" #: Hud.py:640 @@ -1838,15 +1861,16 @@ msgstr "" msgid "No Name" msgstr "" -#: OnGameToFpdb.py:153 PokerStarsToFpdb.py:189 +#: OnGameToFpdb.py:153 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "" -#: OnGameToFpdb.py:154 PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 +#: OnGameToFpdb.py:154 PkrToFpdb.py:145 PkrToFpdb.py:173 +#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "" -#: OnGameToFpdb.py:155 PokerStarsToFpdb.py:191 +#: OnGameToFpdb.py:155 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "" @@ -1883,7 +1907,8 @@ msgid "Specifies a configuration file." msgstr "" #: Options.py:49 -msgid "Indicates program was restarted with a different path (only allowed once)." +msgid "" +"Indicates program was restarted with a different path (only allowed once)." msgstr "" #: Options.py:52 @@ -1938,6 +1963,10 @@ msgstr "" msgid "Unimplemented readAction: '%s' '%s'" msgstr "" +#: PkrToFpdb.py:174 PokerStarsToFpdb.py:221 +msgid "Lim_Blinds has no lookup for '%s'" +msgstr "" + #: PokerStarsSummary.py:72 msgid "didn't recognise buyin currency in:" msgstr "" @@ -1946,10 +1975,6 @@ msgstr "" msgid "in not result starttime" msgstr "" -#: PokerStarsToFpdb.py:221 -msgid "Lim_Blinds has no lookup for '%s'" -msgstr "" - #: PokerStarsToFpdb.py:273 msgid "failed to detect currency" msgstr "" @@ -2119,7 +2144,8 @@ msgstr "" #: Stats.py:867 msgid "" -"(add _0 to name to display with 0 decimal places, _1 to display with 1, etc)\n" +"(add _0 to name to display with 0 decimal places, _1 to display with 1, " +"etc)\n" msgstr "" #: Tables.py:234 @@ -2143,7 +2169,9 @@ msgid "calling main" msgstr "" #: TournamentTracker.py:50 -msgid "Note: error output is being diverted to fpdb-error-log.txt and HUD-error.txt. Any major error will be reported there _only_." +msgid "" +"Note: error output is being diverted to fpdb-error-log.txt and HUD-error." +"txt. Any major error will be reported there _only_." msgstr "" #: TournamentTracker.py:111 @@ -2179,8 +2207,7 @@ msgid "db error: skipping " msgstr "" #: TournamentTracker.py:276 -msgid "" -"Database error %s in hand %d. Skipping.\n" +msgid "Database error %s in hand %d. Skipping.\n" msgstr "" #: TournamentTracker.py:285 @@ -2188,18 +2215,15 @@ msgid "could not find tournament: skipping" msgstr "" #: TournamentTracker.py:286 -msgid "" -"Could not find tournament %d in hand %d. Skipping.\n" +msgid "Could not find tournament %d in hand %d. Skipping.\n" msgstr "" #: TournamentTracker.py:309 -msgid "" -"table name %s not found, skipping.\n" +msgid "table name %s not found, skipping.\n" msgstr "" #: TournamentTracker.py:316 -msgid "" -"tournament tracker starting\n" +msgid "tournament tracker starting\n" msgstr "" #: TourneyFilters.py:61 @@ -2387,8 +2411,7 @@ msgid "self.window doesn't exist? why?" msgstr "" #: fpdb.pyw:48 -msgid "" -" - press return to continue\n" +msgid " - press return to continue\n" msgstr "" #: fpdb.pyw:55 @@ -2402,19 +2425,28 @@ msgid "Press ENTER to continue." msgstr "" #: fpdb.pyw:67 -msgid "We appear to be running in Windows, but the Windows Python Extensions are not loading. Please install the PYWIN32 package from http://sourceforge.net/projects/pywin32/" +msgid "" +"We appear to be running in Windows, but the Windows Python Extensions are " +"not loading. Please install the PYWIN32 package from http://sourceforge.net/" +"projects/pywin32/" msgstr "" #: fpdb.pyw:89 -msgid "Unable to load PYGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org." +msgid "" +"Unable to load PYGTK modules required for GUI. Please install PyCairo, " +"PyGObject, and PyGTK from www.pygtk.org." msgstr "" #: fpdb.pyw:247 -msgid "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, sqlcoder, Bostik, and others" +msgid "" +"Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, " +"sqlcoder, Bostik, and others" msgstr "" #: fpdb.pyw:248 -msgid "You are free to change, and distribute original or changed versions of fpdb within the rules set out by the license" +msgid "" +"You are free to change, and distribute original or changed versions of fpdb " +"within the rules set out by the license" msgstr "" #: fpdb.pyw:249 @@ -2429,169 +2461,183 @@ msgstr "" msgid "Operating System" msgstr "" -#: fpdb.pyw:279 +#: fpdb.pyw:280 msgid "Your config file is: " msgstr "" -#: fpdb.pyw:284 +#: fpdb.pyw:285 msgid "Version Information:" msgstr "" -#: fpdb.pyw:291 +#: fpdb.pyw:292 msgid "Threads: " msgstr "" -#: fpdb.pyw:314 -msgid "Updated preferences have not been loaded because windows are open. Re-start fpdb to load them." +#: fpdb.pyw:315 +msgid "" +"Updated preferences have not been loaded because windows are open. Re-start " +"fpdb to load them." msgstr "" -#: fpdb.pyw:324 +#: fpdb.pyw:325 msgid "Maintain Databases" msgstr "" -#: fpdb.pyw:334 +#: fpdb.pyw:335 msgid "saving updated db data" msgstr "" -#: fpdb.pyw:341 +#: fpdb.pyw:342 msgid "guidb response was " msgstr "" -#: fpdb.pyw:347 -msgid "Cannot open Database Maintenance window because other windows have been opened. Re-start fpdb to use this option." -msgstr "" - -#: fpdb.pyw:350 -msgid "Number of Hands: " +#: fpdb.pyw:348 +msgid "" +"Cannot open Database Maintenance window because other windows have been " +"opened. Re-start fpdb to use this option." msgstr "" #: fpdb.pyw:351 -msgid "" -"\n" -"Number of Tourneys: " +msgid "Number of Hands: " msgstr "" #: fpdb.pyw:352 msgid "" "\n" -"Number of TourneyTypes: " +"Number of Tourneys: " msgstr "" #: fpdb.pyw:353 +msgid "" +"\n" +"Number of TourneyTypes: " +msgstr "" + +#: fpdb.pyw:354 msgid "Database Statistics" msgstr "Datenbankstatistiken" -#: fpdb.pyw:362 +#: fpdb.pyw:363 msgid "HUD Configurator - choose category" msgstr "" -#: fpdb.pyw:368 -msgid "Please select the game category for which you want to configure HUD stats:" +#: fpdb.pyw:369 +msgid "" +"Please select the game category for which you want to configure HUD stats:" msgstr "" -#: fpdb.pyw:420 +#: fpdb.pyw:421 msgid "HUD Configurator - please choose your stats" msgstr "" -#: fpdb.pyw:426 +#: fpdb.pyw:427 msgid "Please choose the stats you wish to use in the below table." msgstr "" -#: fpdb.pyw:430 +#: fpdb.pyw:431 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" -#: fpdb.pyw:434 -msgid "It is not currently possible to select \"empty\" or anything else to that end." +#: fpdb.pyw:435 +msgid "" +"It is not currently possible to select \"empty\" or anything else to that " +"end." msgstr "" -#: fpdb.pyw:438 -msgid "To configure things like colouring you will still have to manually edit your HUD_config.xml." -msgstr "" - -#: fpdb.pyw:545 -msgid "Confirm deleting and recreating tables" +#: fpdb.pyw:439 +msgid "" +"To configure things like colouring you will still have to manually edit your " +"HUD_config.xml." msgstr "" #: fpdb.pyw:546 -msgid "Please confirm that you want to (re-)create the tables. If there already are tables in the database " +msgid "Confirm deleting and recreating tables" msgstr "" #: fpdb.pyw:547 msgid "" +"Please confirm that you want to (re-)create the tables. If there already are " +"tables in the database " +msgstr "" + +#: fpdb.pyw:548 +msgid "" " they will be deleted.\n" "This may take a while." msgstr "" -#: fpdb.pyw:572 +#: fpdb.pyw:573 msgid "User cancelled recreating tables" msgstr "" -#: fpdb.pyw:579 +#: fpdb.pyw:580 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" -#: fpdb.pyw:587 +#: fpdb.pyw:588 msgid " Hero's cache starts: " msgstr "" -#: fpdb.pyw:601 +#: fpdb.pyw:602 msgid " Villains' cache starts: " msgstr "" -#: fpdb.pyw:614 +#: fpdb.pyw:615 msgid " Rebuilding HUD Cache ... " msgstr "" -#: fpdb.pyw:622 +#: fpdb.pyw:623 msgid "User cancelled rebuilding hud cache" msgstr "" -#: fpdb.pyw:634 +#: fpdb.pyw:635 msgid "Confirm rebuilding database indexes" msgstr "" -#: fpdb.pyw:635 +#: fpdb.pyw:636 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" -#: fpdb.pyw:643 +#: fpdb.pyw:644 msgid " Rebuilding Indexes ... " msgstr "" -#: fpdb.pyw:650 +#: fpdb.pyw:651 msgid " Cleaning Database ... " msgstr "" -#: fpdb.pyw:655 +#: fpdb.pyw:656 msgid " Analyzing Database ... " msgstr "" -#: fpdb.pyw:660 +#: fpdb.pyw:661 msgid "User cancelled rebuilding db indexes" msgstr "" -#: fpdb.pyw:755 -msgid "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" +#: fpdb.pyw:756 +msgid "" +"Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" -#: fpdb.pyw:758 +#: fpdb.pyw:759 msgid "Fatal Error - Config File Missing" msgstr "" -#: fpdb.pyw:760 +#: fpdb.pyw:761 msgid "Please copy the config file from the docs folder to:" msgstr "" -#: fpdb.pyw:768 -msgid "and edit it according to the install documentation at http://fpdb.sourceforge.net" +#: fpdb.pyw:769 +msgid "" +"and edit it according to the install documentation at http://fpdb." +"sourceforge.net" msgstr "" #: fpdb.pyw:825 msgid "_Main" msgstr "_Hauptmenü" -#: fpdb.pyw:826 fpdb.pyw:854 +#: fpdb.pyw:826 fpdb.pyw:853 msgid "_Quit" msgstr "_Beenden" @@ -2625,305 +2671,311 @@ msgid "_Import" msgstr "_Importieren" #: fpdb.pyw:831 -msgid "_Set HandHistory Archive Directory" -msgstr "" - -#: fpdb.pyw:832 msgid "B" msgstr "B" -#: fpdb.pyw:833 +#: fpdb.pyw:832 msgid "I" msgstr "I" -#: fpdb.pyw:833 +#: fpdb.pyw:832 msgid "_Import through eMail/IMAP" msgstr "_Import per eMail/IMAP" -#: fpdb.pyw:834 +#: fpdb.pyw:833 msgid "_Viewers" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:834 msgid "A" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:834 msgid "_Auto Import and HUD" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:835 msgid "H" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:835 msgid "_HUD Configurator" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:836 msgid "G" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:836 msgid "_Graphs" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:837 msgid "P" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:837 msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:838 msgid "T" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:838 msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:840 +#: fpdb.pyw:839 msgid "Tourney _Viewer" msgstr "" -#: fpdb.pyw:841 +#: fpdb.pyw:840 msgid "O" msgstr "" -#: fpdb.pyw:841 +#: fpdb.pyw:840 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "" -#: fpdb.pyw:842 fpdb.pyw:1058 +#: fpdb.pyw:841 fpdb.pyw:1057 msgid "Session Stats" msgstr "" -#: fpdb.pyw:843 +#: fpdb.pyw:842 msgid "_Database" msgstr "" -#: fpdb.pyw:844 +#: fpdb.pyw:843 msgid "_Maintain Databases" msgstr "" -#: fpdb.pyw:845 +#: fpdb.pyw:844 msgid "Create or Recreate _Tables" msgstr "" -#: fpdb.pyw:846 +#: fpdb.pyw:845 msgid "Rebuild HUD Cache" msgstr "" -#: fpdb.pyw:847 +#: fpdb.pyw:846 msgid "Rebuild DB Indexes" msgstr "" -#: fpdb.pyw:848 +#: fpdb.pyw:847 msgid "_Statistics" msgstr "_Statistiken" -#: fpdb.pyw:849 +#: fpdb.pyw:848 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "" -#: fpdb.pyw:850 +#: fpdb.pyw:849 msgid "_Help" msgstr "" -#: fpdb.pyw:851 +#: fpdb.pyw:850 msgid "_Log Messages" msgstr "" -#: fpdb.pyw:852 +#: fpdb.pyw:851 msgid "A_bout, License, Copying" msgstr "" -#: fpdb.pyw:870 -msgid "" -"There is an error in your config file\n" +#: fpdb.pyw:869 +msgid "There is an error in your config file\n" msgstr "" -#: fpdb.pyw:871 +#: fpdb.pyw:870 msgid "" "\n" "\n" "Error is: " msgstr "" -#: fpdb.pyw:872 +#: fpdb.pyw:871 msgid "CONFIG FILE ERROR" msgstr "" -#: fpdb.pyw:876 -msgid "" -"Logfile is %s\n" +#: fpdb.pyw:875 +msgid "Logfile is %s\n" msgstr "" -#: fpdb.pyw:878 +#: fpdb.pyw:877 msgid "Config file" msgstr "" -#: fpdb.pyw:879 +#: fpdb.pyw:878 msgid "" "has been created at:\n" "%s.\n" msgstr "" -#: fpdb.pyw:880 +#: fpdb.pyw:879 msgid "Edit your screen_name and hand history path in the supported_sites " msgstr "" -#: fpdb.pyw:881 -msgid "section of the Preferences window (Main menu) before trying to import hands." +#: fpdb.pyw:880 +msgid "" +"section of the Preferences window (Main menu) before trying to import hands." msgstr "" -#: fpdb.pyw:903 +#: fpdb.pyw:902 msgid "Connected to SQLite: %s" msgstr "" -#: fpdb.pyw:907 +#: fpdb.pyw:906 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" -#: fpdb.pyw:908 +#: fpdb.pyw:907 msgid "Please check that the MySQL service has been started" msgstr "" -#: fpdb.pyw:912 +#: fpdb.pyw:911 msgid "Postgres client reports: Unable to connect - " msgstr "" -#: fpdb.pyw:913 +#: fpdb.pyw:912 msgid "Please check that the Postgres service has been started" msgstr "" -#: fpdb.pyw:937 +#: fpdb.pyw:936 msgid "Strong Warning - Invalid database version" msgstr "" -#: fpdb.pyw:939 +#: fpdb.pyw:938 msgid "An invalid DB version or missing tables have been detected." msgstr "" -#: fpdb.pyw:943 -msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu." +#: fpdb.pyw:942 +msgid "" +"This error is not necessarily fatal but it is strongly recommended that you " +"recreate the tables by using the Database menu." msgstr "" -#: fpdb.pyw:947 -msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc." +#: fpdb.pyw:946 +msgid "" +"Not doing this will likely lead to misbehaviour including fpdb crashes, " +"corrupt data etc." msgstr "" -#: fpdb.pyw:960 +#: fpdb.pyw:959 msgid "Status: Connected to %s database named %s on host %s" msgstr "" -#: fpdb.pyw:970 +#: fpdb.pyw:969 msgid "" "\n" "Global lock taken by" msgstr "" -#: fpdb.pyw:973 +#: fpdb.pyw:972 msgid "" "\n" "Failed to get global lock, it is currently held by" msgstr "" -#: fpdb.pyw:983 +#: fpdb.pyw:982 msgid "Quitting normally" msgstr "" -#: fpdb.pyw:1007 -msgid "" -"Global lock released.\n" +#: fpdb.pyw:1006 +msgid "Global lock released.\n" msgstr "" -#: fpdb.pyw:1014 +#: fpdb.pyw:1013 msgid "Auto Import" msgstr "" -#: fpdb.pyw:1021 +#: fpdb.pyw:1020 msgid "Bulk Import" msgstr "" -#: fpdb.pyw:1027 +#: fpdb.pyw:1026 msgid "eMail Import" msgstr "" -#: fpdb.pyw:1034 +#: fpdb.pyw:1033 msgid "Ring Player Stats" msgstr "" -#: fpdb.pyw:1040 +#: fpdb.pyw:1039 msgid "Tourney Player Stats" msgstr "" -#: fpdb.pyw:1046 +#: fpdb.pyw:1045 msgid "Tourney Viewer" msgstr "" -#: fpdb.pyw:1052 +#: fpdb.pyw:1051 msgid "Positional Stats" msgstr "" -#: fpdb.pyw:1062 +#: fpdb.pyw:1061 msgid "" "Fpdb needs translators!\n" -"If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n" +"If you speak another language and have a few minutes or more to spare get in " +"touch by emailing steffen@schaumburger.info\n" "\n" "Welcome to Fpdb!\n" -"To be notified of new snapshots and releases go to https://lists.sourceforge.net/lists/listinfo/fpdb-announce and subscribe.\n" -"If you want to follow development more closely go to https://lists.sourceforge.net/lists/listinfo/fpdb-main and subscribe.\n" +"To be notified of new snapshots and releases go to https://lists.sourceforge." +"net/lists/listinfo/fpdb-announce and subscribe.\n" +"If you want to follow development more closely go to https://lists." +"sourceforge.net/lists/listinfo/fpdb-main and subscribe.\n" "\n" -"This program is currently in an alpha-state, so our database format is still sometimes changed.\n" -"You should therefore always keep your hand history files so that you can re-import after an update, if necessary.\n" +"This program is currently in an alpha-state, so our database format is still " +"sometimes changed.\n" +"You should therefore always keep your hand history files so that you can re-" +"import after an update, if necessary.\n" "\n" -"For documentation please visit our website/wiki at http://fpdb.sourceforge.net/.\n" +"For documentation please visit our website/wiki at http://fpdb.sourceforge." +"net/.\n" "If you need help click on Contact - Get Help on our website.\n" -"Please note that default.conf is no longer needed nor used, all configuration now happens in HUD_config.xml.\n" +"Please note that default.conf is no longer needed nor used, all " +"configuration now happens in HUD_config.xml.\n" "\n" -"This program is free/libre open source software licensed partially under the AGPL3, and partially under GPL2 or later.\n" +"This program is free/libre open source software licensed partially under the " +"AGPL3, and partially under GPL2 or later.\n" "The Windows installer package includes code licensed under the MIT license.\n" -"You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory." +"You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0." +"txt and mit.txt in the fpdb installation directory." msgstr "" -#: fpdb.pyw:1079 +#: fpdb.pyw:1078 msgid "Help" msgstr "" -#: fpdb.pyw:1086 +#: fpdb.pyw:1085 msgid "Graphs" msgstr "" -#: fpdb.pyw:1138 +#: fpdb.pyw:1137 msgid "" "\n" -"Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n" +"Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " +"in:\n" msgstr "" -#: fpdb.pyw:1167 +#: fpdb.pyw:1166 msgid "fpdb starting ..." msgstr "" -#: fpdb.pyw:1224 +#: fpdb.pyw:1223 msgid "FPDB WARNING" msgstr "" -#: fpdb.pyw:1243 +#: fpdb.pyw:1242 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" -#: fpdb.pyw:1251 -msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed." -msgstr "" - -#: fpdb.pyw:1256 -msgid "Select HH Output Directory" +#: fpdb.pyw:1250 +msgid "" +"WARNING: Unable to create hand output directory. Importing is not likely to " +"work until this is fixed." msgstr "" #: fpdb_import.py:60 @@ -2939,7 +2991,9 @@ msgid "Database ID for %s not found" msgstr "" #: fpdb_import.py:191 -msgid "[ERROR] More than 1 Database ID found for %s - Multiple currencies not implemented yet" +msgid "" +"[ERROR] More than 1 Database ID found for %s - Multiple currencies not " +"implemented yet" msgstr "" #: fpdb_import.py:227 @@ -2999,7 +3053,9 @@ msgid "Unknown filter filter_name:'%s' in filter:'%s'" msgstr "" #: fpdb_import.py:519 -msgid "Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge.net so we can fix the problem." +msgid "" +"Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge." +"net so we can fix the problem." msgstr "" #: fpdb_import.py:520 @@ -3007,7 +3063,9 @@ msgid "Filename:" msgstr "" #: fpdb_import.py:521 -msgid "Here is the first line of the hand so you can identify it. Please mention that the error was a ValueError:" +msgid "" +"Here is the first line of the hand so you can identify it. Please mention " +"that the error was a ValueError:" msgstr "" #: fpdb_import.py:523 @@ -3039,5 +3097,6 @@ msgstr "" #: windows_make_bats.py:66 msgid "" "\n" -"no gtk directories found in your path - install gtk or edit the path manually\n" +"no gtk directories found in your path - install gtk or edit the path " +"manually\n" msgstr "" diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index d6859904..350b9f5a 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -4,14 +4,14 @@ # msgid "" msgstr "" -"Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-25 13:31+CEST\n" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2010-08-26 18:52+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: UTF-8\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" "Generated-By: pygettext.py 1.5\n" @@ -581,11 +581,11 @@ msgstr "" msgid " Clear Dates " msgstr "" -#: Filters.py:940 fpdb.pyw:721 +#: Filters.py:940 fpdb.pyw:722 msgid "Pick a date" msgstr "" -#: Filters.py:946 fpdb.pyw:727 +#: Filters.py:946 fpdb.pyw:728 msgid "Done" msgstr "" @@ -729,7 +729,7 @@ msgstr "" msgid "Drop HudCache:" msgstr "" -#: GuiBulkImport.py:297 fpdb.pyw:832 +#: GuiBulkImport.py:297 fpdb.pyw:831 msgid "_Bulk Import" msgstr "" @@ -853,7 +853,7 @@ msgstr "" msgid " not connected but no exception" msgstr "" -#: GuiDatabase.py:293 fpdb.pyw:905 +#: GuiDatabase.py:293 fpdb.pyw:904 msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -861,7 +861,7 @@ msgstr "" msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started" msgstr "" -#: GuiDatabase.py:301 fpdb.pyw:910 +#: GuiDatabase.py:301 fpdb.pyw:909 msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -1050,7 +1050,7 @@ msgstr "" msgid "Test Preferences Dialog" msgstr "" -#: GuiPrefs.py:192 fpdb.pyw:296 +#: GuiPrefs.py:192 fpdb.pyw:297 msgid "Preferences" msgstr "" @@ -1154,7 +1154,7 @@ msgid "" "Note: error output is being diverted to:\n" msgstr "" -#: HUD_main.pyw:96 fpdb.pyw:1139 +#: HUD_main.pyw:96 fpdb.pyw:1138 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1837,15 +1837,16 @@ msgstr "" msgid "No Name" msgstr "" -#: OnGameToFpdb.py:153 PokerStarsToFpdb.py:189 +#: OnGameToFpdb.py:153 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "" -#: OnGameToFpdb.py:154 PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 +#: OnGameToFpdb.py:154 PkrToFpdb.py:145 PkrToFpdb.py:173 +#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "" -#: OnGameToFpdb.py:155 PokerStarsToFpdb.py:191 +#: OnGameToFpdb.py:155 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "" @@ -1937,6 +1938,10 @@ msgstr "" msgid "Unimplemented readAction: '%s' '%s'" msgstr "" +#: PkrToFpdb.py:174 PokerStarsToFpdb.py:221 +msgid "Lim_Blinds has no lookup for '%s'" +msgstr "" + #: PokerStarsSummary.py:72 msgid "didn't recognise buyin currency in:" msgstr "" @@ -1945,10 +1950,6 @@ msgstr "" msgid "in not result starttime" msgstr "" -#: PokerStarsToFpdb.py:221 -msgid "Lim_Blinds has no lookup for '%s'" -msgstr "" - #: PokerStarsToFpdb.py:273 msgid "failed to detect currency" msgstr "" @@ -2428,161 +2429,161 @@ msgstr "" msgid "Operating System" msgstr "" -#: fpdb.pyw:279 +#: fpdb.pyw:280 msgid "Your config file is: " msgstr "" -#: fpdb.pyw:284 +#: fpdb.pyw:285 msgid "Version Information:" msgstr "" -#: fpdb.pyw:291 +#: fpdb.pyw:292 msgid "Threads: " msgstr "" -#: fpdb.pyw:314 +#: fpdb.pyw:315 msgid "Updated preferences have not been loaded because windows are open. Re-start fpdb to load them." msgstr "" -#: fpdb.pyw:324 +#: fpdb.pyw:325 msgid "Maintain Databases" msgstr "" -#: fpdb.pyw:334 +#: fpdb.pyw:335 msgid "saving updated db data" msgstr "" -#: fpdb.pyw:341 +#: fpdb.pyw:342 msgid "guidb response was " msgstr "" -#: fpdb.pyw:347 +#: fpdb.pyw:348 msgid "Cannot open Database Maintenance window because other windows have been opened. Re-start fpdb to use this option." msgstr "" -#: fpdb.pyw:350 -msgid "Number of Hands: " -msgstr "" - #: fpdb.pyw:351 -msgid "" -"\n" -"Number of Tourneys: " +msgid "Number of Hands: " msgstr "" #: fpdb.pyw:352 msgid "" "\n" -"Number of TourneyTypes: " +"Number of Tourneys: " msgstr "" #: fpdb.pyw:353 +msgid "" +"\n" +"Number of TourneyTypes: " +msgstr "" + +#: fpdb.pyw:354 msgid "Database Statistics" msgstr "" -#: fpdb.pyw:362 +#: fpdb.pyw:363 msgid "HUD Configurator - choose category" msgstr "" -#: fpdb.pyw:368 +#: fpdb.pyw:369 msgid "Please select the game category for which you want to configure HUD stats:" msgstr "" -#: fpdb.pyw:420 +#: fpdb.pyw:421 msgid "HUD Configurator - please choose your stats" msgstr "" -#: fpdb.pyw:426 +#: fpdb.pyw:427 msgid "Please choose the stats you wish to use in the below table." msgstr "" -#: fpdb.pyw:430 +#: fpdb.pyw:431 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" -#: fpdb.pyw:434 +#: fpdb.pyw:435 msgid "It is not currently possible to select \"empty\" or anything else to that end." msgstr "" -#: fpdb.pyw:438 +#: fpdb.pyw:439 msgid "To configure things like colouring you will still have to manually edit your HUD_config.xml." msgstr "" -#: fpdb.pyw:545 +#: fpdb.pyw:546 msgid "Confirm deleting and recreating tables" msgstr "" -#: fpdb.pyw:546 +#: fpdb.pyw:547 msgid "Please confirm that you want to (re-)create the tables. If there already are tables in the database " msgstr "" -#: fpdb.pyw:547 +#: fpdb.pyw:548 msgid "" " they will be deleted.\n" "This may take a while." msgstr "" -#: fpdb.pyw:572 +#: fpdb.pyw:573 msgid "User cancelled recreating tables" msgstr "" -#: fpdb.pyw:579 +#: fpdb.pyw:580 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" -#: fpdb.pyw:587 +#: fpdb.pyw:588 msgid " Hero's cache starts: " msgstr "" -#: fpdb.pyw:601 +#: fpdb.pyw:602 msgid " Villains' cache starts: " msgstr "" -#: fpdb.pyw:614 +#: fpdb.pyw:615 msgid " Rebuilding HUD Cache ... " msgstr "" -#: fpdb.pyw:622 +#: fpdb.pyw:623 msgid "User cancelled rebuilding hud cache" msgstr "" -#: fpdb.pyw:634 +#: fpdb.pyw:635 msgid "Confirm rebuilding database indexes" msgstr "" -#: fpdb.pyw:635 +#: fpdb.pyw:636 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" -#: fpdb.pyw:643 +#: fpdb.pyw:644 msgid " Rebuilding Indexes ... " msgstr "" -#: fpdb.pyw:650 +#: fpdb.pyw:651 msgid " Cleaning Database ... " msgstr "" -#: fpdb.pyw:655 +#: fpdb.pyw:656 msgid " Analyzing Database ... " msgstr "" -#: fpdb.pyw:660 +#: fpdb.pyw:661 msgid "User cancelled rebuilding db indexes" msgstr "" -#: fpdb.pyw:755 +#: fpdb.pyw:756 msgid "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" -#: fpdb.pyw:758 +#: fpdb.pyw:759 msgid "Fatal Error - Config File Missing" msgstr "" -#: fpdb.pyw:760 +#: fpdb.pyw:761 msgid "Please copy the config file from the docs folder to:" msgstr "" -#: fpdb.pyw:768 +#: fpdb.pyw:769 msgid "and edit it according to the install documentation at http://fpdb.sourceforge.net" msgstr "" @@ -2590,7 +2591,7 @@ msgstr "" msgid "_Main" msgstr "" -#: fpdb.pyw:826 fpdb.pyw:854 +#: fpdb.pyw:826 fpdb.pyw:853 msgid "_Quit" msgstr "" @@ -2623,250 +2624,246 @@ msgid "_Import" msgstr "" #: fpdb.pyw:831 -msgid "_Set HandHistory Archive Directory" -msgstr "" - -#: fpdb.pyw:832 msgid "B" msgstr "" -#: fpdb.pyw:833 +#: fpdb.pyw:832 msgid "I" msgstr "" -#: fpdb.pyw:833 +#: fpdb.pyw:832 msgid "_Import through eMail/IMAP" msgstr "" -#: fpdb.pyw:834 +#: fpdb.pyw:833 msgid "_Viewers" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:834 msgid "A" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:834 msgid "_Auto Import and HUD" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:835 msgid "H" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:835 msgid "_HUD Configurator" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:836 msgid "G" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:836 msgid "_Graphs" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:837 msgid "P" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:837 msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:838 msgid "T" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:838 msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:840 +#: fpdb.pyw:839 msgid "Tourney _Viewer" msgstr "" -#: fpdb.pyw:841 +#: fpdb.pyw:840 msgid "O" msgstr "" -#: fpdb.pyw:841 +#: fpdb.pyw:840 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "" -#: fpdb.pyw:842 fpdb.pyw:1058 +#: fpdb.pyw:841 fpdb.pyw:1057 msgid "Session Stats" msgstr "" -#: fpdb.pyw:843 +#: fpdb.pyw:842 msgid "_Database" msgstr "" -#: fpdb.pyw:844 +#: fpdb.pyw:843 msgid "_Maintain Databases" msgstr "" -#: fpdb.pyw:845 +#: fpdb.pyw:844 msgid "Create or Recreate _Tables" msgstr "" -#: fpdb.pyw:846 +#: fpdb.pyw:845 msgid "Rebuild HUD Cache" msgstr "" -#: fpdb.pyw:847 +#: fpdb.pyw:846 msgid "Rebuild DB Indexes" msgstr "" -#: fpdb.pyw:848 +#: fpdb.pyw:847 msgid "_Statistics" msgstr "" -#: fpdb.pyw:849 +#: fpdb.pyw:848 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "" -#: fpdb.pyw:850 +#: fpdb.pyw:849 msgid "_Help" msgstr "" -#: fpdb.pyw:851 +#: fpdb.pyw:850 msgid "_Log Messages" msgstr "" -#: fpdb.pyw:852 +#: fpdb.pyw:851 msgid "A_bout, License, Copying" msgstr "" -#: fpdb.pyw:870 +#: fpdb.pyw:869 msgid "" "There is an error in your config file\n" msgstr "" -#: fpdb.pyw:871 +#: fpdb.pyw:870 msgid "" "\n" "\n" "Error is: " msgstr "" -#: fpdb.pyw:872 +#: fpdb.pyw:871 msgid "CONFIG FILE ERROR" msgstr "" -#: fpdb.pyw:876 +#: fpdb.pyw:875 msgid "" "Logfile is %s\n" msgstr "" -#: fpdb.pyw:878 +#: fpdb.pyw:877 msgid "Config file" msgstr "" -#: fpdb.pyw:879 +#: fpdb.pyw:878 msgid "" "has been created at:\n" "%s.\n" msgstr "" -#: fpdb.pyw:880 +#: fpdb.pyw:879 msgid "Edit your screen_name and hand history path in the supported_sites " msgstr "" -#: fpdb.pyw:881 +#: fpdb.pyw:880 msgid "section of the Preferences window (Main menu) before trying to import hands." msgstr "" -#: fpdb.pyw:903 +#: fpdb.pyw:902 msgid "Connected to SQLite: %s" msgstr "" -#: fpdb.pyw:907 +#: fpdb.pyw:906 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" -#: fpdb.pyw:908 +#: fpdb.pyw:907 msgid "Please check that the MySQL service has been started" msgstr "" -#: fpdb.pyw:912 +#: fpdb.pyw:911 msgid "Postgres client reports: Unable to connect - " msgstr "" -#: fpdb.pyw:913 +#: fpdb.pyw:912 msgid "Please check that the Postgres service has been started" msgstr "" -#: fpdb.pyw:937 +#: fpdb.pyw:936 msgid "Strong Warning - Invalid database version" msgstr "" -#: fpdb.pyw:939 +#: fpdb.pyw:938 msgid "An invalid DB version or missing tables have been detected." msgstr "" -#: fpdb.pyw:943 +#: fpdb.pyw:942 msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu." msgstr "" -#: fpdb.pyw:947 +#: fpdb.pyw:946 msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc." msgstr "" -#: fpdb.pyw:960 +#: fpdb.pyw:959 msgid "Status: Connected to %s database named %s on host %s" msgstr "" -#: fpdb.pyw:970 +#: fpdb.pyw:969 msgid "" "\n" "Global lock taken by" msgstr "" -#: fpdb.pyw:973 +#: fpdb.pyw:972 msgid "" "\n" "Failed to get global lock, it is currently held by" msgstr "" -#: fpdb.pyw:983 +#: fpdb.pyw:982 msgid "Quitting normally" msgstr "" -#: fpdb.pyw:1007 +#: fpdb.pyw:1006 msgid "" "Global lock released.\n" msgstr "" -#: fpdb.pyw:1014 +#: fpdb.pyw:1013 msgid "Auto Import" msgstr "" -#: fpdb.pyw:1021 +#: fpdb.pyw:1020 msgid "Bulk Import" msgstr "" -#: fpdb.pyw:1027 +#: fpdb.pyw:1026 msgid "eMail Import" msgstr "" -#: fpdb.pyw:1034 +#: fpdb.pyw:1033 msgid "Ring Player Stats" msgstr "" -#: fpdb.pyw:1040 +#: fpdb.pyw:1039 msgid "Tourney Player Stats" msgstr "" -#: fpdb.pyw:1046 +#: fpdb.pyw:1045 msgid "Tourney Viewer" msgstr "" -#: fpdb.pyw:1052 +#: fpdb.pyw:1051 msgid "Positional Stats" msgstr "" -#: fpdb.pyw:1062 +#: fpdb.pyw:1061 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n" @@ -2887,43 +2884,39 @@ msgid "" "You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory." msgstr "" -#: fpdb.pyw:1079 +#: fpdb.pyw:1078 msgid "Help" msgstr "" -#: fpdb.pyw:1086 +#: fpdb.pyw:1085 msgid "Graphs" msgstr "" -#: fpdb.pyw:1138 +#: fpdb.pyw:1137 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n" msgstr "" -#: fpdb.pyw:1167 +#: fpdb.pyw:1166 msgid "fpdb starting ..." msgstr "" -#: fpdb.pyw:1224 +#: fpdb.pyw:1223 msgid "FPDB WARNING" msgstr "" -#: fpdb.pyw:1243 +#: fpdb.pyw:1242 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" -#: fpdb.pyw:1251 +#: fpdb.pyw:1250 msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed." msgstr "" -#: fpdb.pyw:1256 -msgid "Select HH Output Directory" -msgstr "" - #: fpdb_import.py:60 msgid "Import database module: MySQLdb not found" msgstr "" diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 1d454451..11a0a35d 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-25 13:31+CEST\n" +"POT-Creation-Date: 2010-08-26 18:52+CEST\n" "PO-Revision-Date: 2010-08-26 01:40+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" @@ -606,11 +606,11 @@ msgstr "Nem található játék az adatbázisban" msgid " Clear Dates " msgstr "Törlés" -#: Filters.py:940 fpdb.pyw:721 +#: Filters.py:940 fpdb.pyw:722 msgid "Pick a date" msgstr "Válassz napot" -#: Filters.py:946 fpdb.pyw:727 +#: Filters.py:946 fpdb.pyw:728 msgid "Done" msgstr "Kész" @@ -772,7 +772,7 @@ msgstr "Terem:" msgid "Drop HudCache:" msgstr "HUD gyorstár eldobása:" -#: GuiBulkImport.py:297 fpdb.pyw:832 +#: GuiBulkImport.py:297 fpdb.pyw:831 msgid "_Bulk Import" msgstr "_Importálás" @@ -854,8 +854,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" -"s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " +"%s másodperc alatt - %.0f/mp" #: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" @@ -909,7 +909,7 @@ msgstr " kapcsolódás OK" msgid " not connected but no exception" msgstr " nem kapcsolódott, de nem volt hibaüzenet" -#: GuiDatabase.py:293 fpdb.pyw:905 +#: GuiDatabase.py:293 fpdb.pyw:904 msgid "" "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -924,7 +924,7 @@ msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " "- Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" -#: GuiDatabase.py:301 fpdb.pyw:910 +#: GuiDatabase.py:301 fpdb.pyw:909 msgid "" "Postgres Server reports: Access denied. Are your permissions set correctly?" msgstr "" @@ -1135,7 +1135,7 @@ msgstr "Érték (kattints duplán a módosításhoz)" msgid "Test Preferences Dialog" msgstr "Beállítási párbeszéd (teszt)" -#: GuiPrefs.py:192 fpdb.pyw:296 +#: GuiPrefs.py:192 fpdb.pyw:297 msgid "Preferences" msgstr "Beállítások" @@ -1248,7 +1248,7 @@ msgstr "HUD_main indítás: " msgid "Note: error output is being diverted to:\n" msgstr "Megjegyzés: a hibakimenet ide van átirányítva:\n" -#: HUD_main.pyw:96 fpdb.pyw:1139 +#: HUD_main.pyw:96 fpdb.pyw:1138 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1306,11 +1306,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -1965,15 +1965,16 @@ msgstr "IMAP import befejezve, kapcsolat lezárása" msgid "No Name" msgstr "Nincs név" -#: OnGameToFpdb.py:153 PokerStarsToFpdb.py:189 +#: OnGameToFpdb.py:153 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" -#: OnGameToFpdb.py:154 PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 +#: OnGameToFpdb.py:154 PkrToFpdb.py:145 PkrToFpdb.py:173 +#: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "determineGameType: FpdbParseError" -#: OnGameToFpdb.py:155 PokerStarsToFpdb.py:191 +#: OnGameToFpdb.py:155 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "Nem sikerült felismerni a játéktípust innen: '%s'" @@ -2067,6 +2068,10 @@ msgstr "GameType nem olvasható az aktuális leosztásból" msgid "Unimplemented readAction: '%s' '%s'" msgstr "Nem ismert readAction: '%s' '%s'" +#: PkrToFpdb.py:174 PokerStarsToFpdb.py:221 +msgid "Lim_Blinds has no lookup for '%s'" +msgstr "Lim_Blinds nem tartalmazza ezt: '%s'" + #: PokerStarsSummary.py:72 msgid "didn't recognise buyin currency in:" msgstr "nem sikerült felismerni a beülő pénznemét ebben:" @@ -2075,10 +2080,6 @@ msgstr "nem sikerült felismerni a beülő pénznemét ebben:" msgid "in not result starttime" msgstr "a starttime nem található részében" -#: PokerStarsToFpdb.py:221 -msgid "Lim_Blinds has no lookup for '%s'" -msgstr "Lim_Blinds nem tartalmazza ezt: '%s'" - #: PokerStarsToFpdb.py:273 msgid "failed to detect currency" msgstr "nem sikerült a pénznem meghatározása" @@ -2584,19 +2585,19 @@ msgstr "és mások" msgid "Operating System" msgstr "Operációs rendszer" -#: fpdb.pyw:279 +#: fpdb.pyw:280 msgid "Your config file is: " msgstr "Konfigurációs fájl:" -#: fpdb.pyw:284 +#: fpdb.pyw:285 msgid "Version Information:" msgstr "Verzióinformáció:" -#: fpdb.pyw:291 +#: fpdb.pyw:292 msgid "Threads: " msgstr "Szálak:" -#: fpdb.pyw:314 +#: fpdb.pyw:315 msgid "" "Updated preferences have not been loaded because windows are open. Re-start " "fpdb to load them." @@ -2604,19 +2605,19 @@ msgstr "" "A megváltoztatott beállítások még nem léptek érvénybe, mert vannak nyitott " "ablakok. Indítsd újra az fpdb-t az érvénybe léptetésükhöz." -#: fpdb.pyw:324 +#: fpdb.pyw:325 msgid "Maintain Databases" msgstr "Adatbázisok karbantartása" -#: fpdb.pyw:334 +#: fpdb.pyw:335 msgid "saving updated db data" msgstr "frissített adatbázis adatok mentése" -#: fpdb.pyw:341 +#: fpdb.pyw:342 msgid "guidb response was " msgstr "a guidb válasza ez volt: " -#: fpdb.pyw:347 +#: fpdb.pyw:348 msgid "" "Cannot open Database Maintenance window because other windows have been " "opened. Re-start fpdb to use this option." @@ -2624,11 +2625,11 @@ msgstr "" "Nem tudom megnyitni az adatbázis karbantartó ablakot, mert más ablakok is " "nyitva vannak. Indítsd újra az fpdb-t ezen funkció használatához." -#: fpdb.pyw:350 +#: fpdb.pyw:351 msgid "Number of Hands: " msgstr "Leosztások száma:" -#: fpdb.pyw:351 +#: fpdb.pyw:352 msgid "" "\n" "Number of Tourneys: " @@ -2636,7 +2637,7 @@ msgstr "" "\n" "Versenyek száma: " -#: fpdb.pyw:352 +#: fpdb.pyw:353 msgid "" "\n" "Number of TourneyTypes: " @@ -2644,39 +2645,39 @@ msgstr "" "\n" "Versenytípusok száma: " -#: fpdb.pyw:353 +#: fpdb.pyw:354 msgid "Database Statistics" msgstr "Adatbázis statisztikák" -#: fpdb.pyw:362 +#: fpdb.pyw:363 msgid "HUD Configurator - choose category" msgstr "HUD beállító - válassz típust és méretet" -#: fpdb.pyw:368 +#: fpdb.pyw:369 msgid "" "Please select the game category for which you want to configure HUD stats:" msgstr "Válassz játéktípust, amelyre vonatkozóan be akarod állítani a HUD-ot:" -#: fpdb.pyw:420 +#: fpdb.pyw:421 msgid "HUD Configurator - please choose your stats" msgstr "HUD beállító - válassz statisztikákat" -#: fpdb.pyw:426 +#: fpdb.pyw:427 msgid "Please choose the stats you wish to use in the below table." msgstr "Válaszd ki a lenti táblázatból a megjelenítendő statisztikákat." -#: fpdb.pyw:430 +#: fpdb.pyw:431 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" "Egy statisztikát ne válassz ki többször, mert nem fog működni (ki fog lépni)." -#: fpdb.pyw:434 +#: fpdb.pyw:435 msgid "" "It is not currently possible to select \"empty\" or anything else to that " "end." msgstr "Jelenleg nem lehetséges olyat választani, hogy \"üres\" vagy hasonló." -#: fpdb.pyw:438 +#: fpdb.pyw:439 msgid "" "To configure things like colouring you will still have to manually edit your " "HUD_config.xml." @@ -2684,11 +2685,11 @@ msgstr "" "Bizonyos dolgok (pl. színezés) beállításához egyelőre még kézzel kell " "szerkesztened a HUD_config.xml fájlt." -#: fpdb.pyw:545 +#: fpdb.pyw:546 msgid "Confirm deleting and recreating tables" msgstr "Erősítsd meg a táblák törlését és újra létrehozását" -#: fpdb.pyw:546 +#: fpdb.pyw:547 msgid "" "Please confirm that you want to (re-)create the tables. If there already are " "tables in the database " @@ -2696,7 +2697,7 @@ msgstr "" "Kérlek erősítsd meg, hogy valóban (újra) létre akarod hozni a táblákat. Ha " "már vannak táblák az adatbázisban (" -#: fpdb.pyw:547 +#: fpdb.pyw:548 msgid "" " they will be deleted.\n" "This may take a while." @@ -2704,72 +2705,72 @@ msgstr "" "), akkor azok törölve lesznek.\n" "Ja, és ez eltarthat egy darabig:)" -#: fpdb.pyw:572 +#: fpdb.pyw:573 msgid "User cancelled recreating tables" msgstr "A felhasználó megszakította a táblák újra létrehozását" -#: fpdb.pyw:579 +#: fpdb.pyw:580 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod generálni a HUD gyorstárat." -#: fpdb.pyw:587 +#: fpdb.pyw:588 msgid " Hero's cache starts: " msgstr " Saját gyorstár innentől: " -#: fpdb.pyw:601 +#: fpdb.pyw:602 msgid " Villains' cache starts: " msgstr " Ellenfelek gyorstára innentől: " -#: fpdb.pyw:614 +#: fpdb.pyw:615 msgid " Rebuilding HUD Cache ... " msgstr " HUD gyorstár újraépítése ... " -#: fpdb.pyw:622 +#: fpdb.pyw:623 msgid "User cancelled rebuilding hud cache" msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." -#: fpdb.pyw:634 +#: fpdb.pyw:635 msgid "Confirm rebuilding database indexes" msgstr "Erősítsd meg az adatbázis indexeinek újraépítését" -#: fpdb.pyw:635 +#: fpdb.pyw:636 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod építeni az adatbázis indexeit." -#: fpdb.pyw:643 +#: fpdb.pyw:644 msgid " Rebuilding Indexes ... " msgstr " Indexek újraépítése ... " -#: fpdb.pyw:650 +#: fpdb.pyw:651 msgid " Cleaning Database ... " msgstr " Adatbázis tisztítása ... " -#: fpdb.pyw:655 +#: fpdb.pyw:656 msgid " Analyzing Database ... " msgstr " Adatbázis elemzése ... " -#: fpdb.pyw:660 +#: fpdb.pyw:661 msgid "User cancelled rebuilding db indexes" msgstr "A felhasználó megszakította az adatbázis indexeinek újraépítését." -#: fpdb.pyw:755 +#: fpdb.pyw:756 msgid "" "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" "Még nincs kész: Profil mentése (addig használd a HUD elrendezésének " "mentését, az jó)" -#: fpdb.pyw:758 +#: fpdb.pyw:759 msgid "Fatal Error - Config File Missing" msgstr "Végzetes hiba - Hiányzó konfigurációs fájl" -#: fpdb.pyw:760 +#: fpdb.pyw:761 msgid "Please copy the config file from the docs folder to:" msgstr "Kérlek másold át a konfigurációs fájlt a docs könyvtárból ide:" -#: fpdb.pyw:768 +#: fpdb.pyw:769 msgid "" "and edit it according to the install documentation at http://fpdb." "sourceforge.net" @@ -2781,7 +2782,7 @@ msgstr "" msgid "_Main" msgstr "Fő_menü" -#: fpdb.pyw:826 fpdb.pyw:854 +#: fpdb.pyw:826 fpdb.pyw:853 msgid "_Quit" msgstr "_Kilépés" @@ -2814,126 +2815,122 @@ msgid "_Import" msgstr "_Importálás" #: fpdb.pyw:831 -msgid "_Set HandHistory Archive Directory" -msgstr "Leo_sztásarchívum könyvtára" - -#: fpdb.pyw:832 msgid "B" msgstr "I" -#: fpdb.pyw:833 +#: fpdb.pyw:832 msgid "I" msgstr "E" -#: fpdb.pyw:833 +#: fpdb.pyw:832 msgid "_Import through eMail/IMAP" msgstr "_Email import (IMAP)" -#: fpdb.pyw:834 +#: fpdb.pyw:833 msgid "_Viewers" msgstr "_Nézetek" -#: fpdb.pyw:835 +#: fpdb.pyw:834 msgid "A" msgstr "A" -#: fpdb.pyw:835 +#: fpdb.pyw:834 msgid "_Auto Import and HUD" msgstr "_AutoImport és HUD" -#: fpdb.pyw:836 +#: fpdb.pyw:835 msgid "H" msgstr "H" -#: fpdb.pyw:836 +#: fpdb.pyw:835 msgid "_HUD Configurator" msgstr "_HUD beállítása" -#: fpdb.pyw:837 +#: fpdb.pyw:836 msgid "G" msgstr "G" -#: fpdb.pyw:837 +#: fpdb.pyw:836 msgid "_Graphs" msgstr "_Grafikonok" -#: fpdb.pyw:838 +#: fpdb.pyw:837 msgid "P" msgstr "P" -#: fpdb.pyw:838 +#: fpdb.pyw:837 msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "Kész_pénzes statisztikák (táblázat; Postgre-vel nem)" -#: fpdb.pyw:839 +#: fpdb.pyw:838 msgid "T" msgstr "T" -#: fpdb.pyw:839 +#: fpdb.pyw:838 msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "Versenyjá_tékos statisztikák (táblázat; Postgre-vel nem)" -#: fpdb.pyw:840 +#: fpdb.pyw:839 msgid "Tourney _Viewer" msgstr "_Verseny nézet" -#: fpdb.pyw:841 +#: fpdb.pyw:840 msgid "O" msgstr "O" -#: fpdb.pyw:841 +#: fpdb.pyw:840 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "P_ozíciós statisztikák (táblázat; SQLite-tal nem)" -#: fpdb.pyw:842 fpdb.pyw:1058 +#: fpdb.pyw:841 fpdb.pyw:1057 msgid "Session Stats" msgstr "Session statisztikák" -#: fpdb.pyw:843 +#: fpdb.pyw:842 msgid "_Database" msgstr "A_datbázis" -#: fpdb.pyw:844 +#: fpdb.pyw:843 msgid "_Maintain Databases" msgstr "_Karbantartás" -#: fpdb.pyw:845 +#: fpdb.pyw:844 msgid "Create or Recreate _Tables" msgstr "_Táblák (újra) létrehozása" -#: fpdb.pyw:846 +#: fpdb.pyw:845 msgid "Rebuild HUD Cache" msgstr "HUD gyorstár újraépítése" -#: fpdb.pyw:847 +#: fpdb.pyw:846 msgid "Rebuild DB Indexes" msgstr "Adatbázis indexek újraépítése" -#: fpdb.pyw:848 +#: fpdb.pyw:847 msgid "_Statistics" msgstr "_Statisztikák" -#: fpdb.pyw:849 +#: fpdb.pyw:848 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "Adatbázis kiírása textfájlba (SOKÁIG tart)" -#: fpdb.pyw:850 +#: fpdb.pyw:849 msgid "_Help" msgstr "_Súgó" -#: fpdb.pyw:851 +#: fpdb.pyw:850 msgid "_Log Messages" msgstr "Nap_lóbejegyzések" -#: fpdb.pyw:852 +#: fpdb.pyw:851 msgid "A_bout, License, Copying" msgstr "_Névjegy, licensz, másolás" -#: fpdb.pyw:870 +#: fpdb.pyw:869 msgid "There is an error in your config file\n" msgstr "Hiba van a konfigurációs fájlodban\n" -#: fpdb.pyw:871 +#: fpdb.pyw:870 msgid "" "\n" "\n" @@ -2943,19 +2940,19 @@ msgstr "" "\n" "A hiba a következő: " -#: fpdb.pyw:872 +#: fpdb.pyw:871 msgid "CONFIG FILE ERROR" msgstr "KONFIGURÁCIÓS FÁJL HIBA" -#: fpdb.pyw:876 +#: fpdb.pyw:875 msgid "Logfile is %s\n" msgstr "A naplófájl: %s\n" -#: fpdb.pyw:878 +#: fpdb.pyw:877 msgid "Config file" msgstr "Konfigurációs fájl" -#: fpdb.pyw:879 +#: fpdb.pyw:878 msgid "" "has been created at:\n" "%s.\n" @@ -2963,50 +2960,50 @@ msgstr "" "létrehozva itt:\n" "%s.\n" -#: fpdb.pyw:880 +#: fpdb.pyw:879 msgid "Edit your screen_name and hand history path in the supported_sites " msgstr "" "Állítsd be az asztalnál látható nevedet és a leosztástörténetek helyét a " "támogatott termek" -#: fpdb.pyw:881 +#: fpdb.pyw:880 msgid "" "section of the Preferences window (Main menu) before trying to import hands." msgstr "" "résznél a Beállítások ablakban (Főmenü) mielőtt megpróbálnál leosztásokat " "importálni." -#: fpdb.pyw:903 +#: fpdb.pyw:902 msgid "Connected to SQLite: %s" msgstr "Kapcsolódva az SQLite adatbázishoz: %s" -#: fpdb.pyw:907 +#: fpdb.pyw:906 msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " "- " -#: fpdb.pyw:908 +#: fpdb.pyw:907 msgid "Please check that the MySQL service has been started" msgstr "Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" -#: fpdb.pyw:912 +#: fpdb.pyw:911 msgid "Postgres client reports: Unable to connect - " msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " -#: fpdb.pyw:913 +#: fpdb.pyw:912 msgid "Please check that the Postgres service has been started" msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" -#: fpdb.pyw:937 +#: fpdb.pyw:936 msgid "Strong Warning - Invalid database version" msgstr "Nyomatékos figyelmeztetés - Érvénytelen adatbázis verzió" -#: fpdb.pyw:939 +#: fpdb.pyw:938 msgid "An invalid DB version or missing tables have been detected." msgstr "Érvénytelen adatbázis verziót vagy hiányzó táblá(ka)t találtam." -#: fpdb.pyw:943 +#: fpdb.pyw:942 msgid "" "This error is not necessarily fatal but it is strongly recommended that you " "recreate the tables by using the Database menu." @@ -3014,7 +3011,7 @@ msgstr "" "Ez a hiba nem feltétlenül végzetes, de erősen javasolt a táblák " "újragenerálása az Adatbázis menü használatával." -#: fpdb.pyw:947 +#: fpdb.pyw:946 msgid "" "Not doing this will likely lead to misbehaviour including fpdb crashes, " "corrupt data etc." @@ -3023,13 +3020,13 @@ msgstr "" "kiléphet, tönkretehet adatokat, stb." # FIXME: would need a different word ordering in Hungarian -#: fpdb.pyw:960 +#: fpdb.pyw:959 msgid "Status: Connected to %s database named %s on host %s" msgstr "" "Állapot: Kapcsolódva a(z) %s adatbázis-kezelő %s nevű adatbázisához a(z) %s " "kiszolgálón" -#: fpdb.pyw:970 +#: fpdb.pyw:969 msgid "" "\n" "Global lock taken by" @@ -3037,7 +3034,7 @@ msgstr "" "\n" "Globális zárolást végzett:" -#: fpdb.pyw:973 +#: fpdb.pyw:972 msgid "" "\n" "Failed to get global lock, it is currently held by" @@ -3045,43 +3042,43 @@ msgstr "" "\n" "Globális zárolás meghiúsult, jelenleg már zárolta:" -#: fpdb.pyw:983 +#: fpdb.pyw:982 msgid "Quitting normally" msgstr "Normál kilépés" -#: fpdb.pyw:1007 +#: fpdb.pyw:1006 msgid "Global lock released.\n" msgstr "Globális zárolás feloldva.\n" -#: fpdb.pyw:1014 +#: fpdb.pyw:1013 msgid "Auto Import" msgstr "AutoImport" -#: fpdb.pyw:1021 +#: fpdb.pyw:1020 msgid "Bulk Import" msgstr "Importálás" -#: fpdb.pyw:1027 +#: fpdb.pyw:1026 msgid "eMail Import" msgstr "Email import" -#: fpdb.pyw:1034 +#: fpdb.pyw:1033 msgid "Ring Player Stats" msgstr "Készpénzes statisztikák" -#: fpdb.pyw:1040 +#: fpdb.pyw:1039 msgid "Tourney Player Stats" msgstr "Versenystatisztikák" -#: fpdb.pyw:1046 +#: fpdb.pyw:1045 msgid "Tourney Viewer" msgstr "Verseny nézet" -#: fpdb.pyw:1052 +#: fpdb.pyw:1051 msgid "Positional Stats" msgstr "Pozíciós statisztikák" -#: fpdb.pyw:1062 +#: fpdb.pyw:1061 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in " @@ -3139,18 +3136,18 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" -"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " +"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." -#: fpdb.pyw:1079 +#: fpdb.pyw:1078 msgid "Help" msgstr "Súgó" -#: fpdb.pyw:1086 +#: fpdb.pyw:1085 msgid "Graphs" msgstr "Grafikonok" -#: fpdb.pyw:1138 +#: fpdb.pyw:1137 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " @@ -3160,15 +3157,15 @@ msgstr "" "Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " "fájlokba itt:\n" -#: fpdb.pyw:1167 +#: fpdb.pyw:1166 msgid "fpdb starting ..." msgstr "fpdb indítása ..." -#: fpdb.pyw:1224 +#: fpdb.pyw:1223 msgid "FPDB WARNING" msgstr "FPDB FIGYELMEZTETÉS" -#: fpdb.pyw:1243 +#: fpdb.pyw:1242 msgid "" "WARNING: Unable to find output hh directory %s\n" "\n" @@ -3179,7 +3176,7 @@ msgstr "" " Kattints az IGEN gombra a könyvtár létrehozásához, vagy a NEM gombra egy " "másik könyvtár választásához." -#: fpdb.pyw:1251 +#: fpdb.pyw:1250 msgid "" "WARNING: Unable to create hand output directory. Importing is not likely to " "work until this is fixed." @@ -3187,10 +3184,6 @@ msgstr "" "FIGYELEM: Nem sikerült a leosztásarchívum könyvtárának létrehozása. Az " "importálás valószínűleg nem fog működni." -#: fpdb.pyw:1256 -msgid "Select HH Output Directory" -msgstr "Válaszd ki a leosztásarchívum könyvtárát" - #: fpdb_import.py:60 msgid "Import database module: MySQLdb not found" msgstr "Nem található a következő adatbázis-modul: MySQLdb" @@ -3326,6 +3319,12 @@ msgstr "" "Nem találhatóak a GTK könyvtárak az útvonaladban - telepítsd a GTK-t, vagy " "állítsd be kézzel az útvonalat\n" +#~ msgid "_Set HandHistory Archive Directory" +#~ msgstr "Leo_sztásarchívum könyvtára" + +#~ msgid "Select HH Output Directory" +#~ msgstr "Válaszd ki a leosztásarchívum könyvtárát" + #~ msgid "commit finished ok, i = " #~ msgstr "a véglegesítés sikeresen befejeződött, i = " diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index ced7701f08ab78ef87e8c9878ed33e1c38362f9f..2d28524ba3177967c7dbfdfd77bc669dd8231db4 100644 GIT binary patch delta 13721 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 TeOTn>IrQkFx5xANkk|hK8|ouB diff --git a/pyfpdb/locale/update-po-files.sh b/pyfpdb/locale/update-po-files.sh index cf0d0e81..f39b143d 100755 --- a/pyfpdb/locale/update-po-files.sh +++ b/pyfpdb/locale/update-po-files.sh @@ -1,2 +1,3 @@ msgmerge --update fpdb-hu_HU.po fpdb-en_GB.po +msgmerge --update fpdb-de_DE.po fpdb-en_GB.po From 1e998f478093d12340a800111936ace7dc404494 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 26 Aug 2010 18:54:43 +0200 Subject: [PATCH 284/641] l10n: cola skipped this mo file --- pyfpdb/locale/de/LC_MESSAGES/fpdb.mo | Bin 423 -> 1048 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo index 646ce3997b7c3460bbe747c345026a010c787326..291c02d07d070c90c03e5dbad86cca418d8d7d00 100644 GIT binary patch literal 1048 zcma))F>ezw6vq!yM0G_B6fq!#%+{*9^b(OOT$>775=hmE(4-aH;pAQ}CKvnU^HpSL z0tOZ&#EzKR5euJz6^WJ401|&I*QPLW(!1Y#_Ot!`{QrJs;jM%3GVBKIwGGaEzu>#D z-vt-X&En;PH^F7ht%8@pI(QM>1FwSz;5BdpUI1Sdd4bGJ2j zyUu-Xc%Ns)x`rE(88OJ5j;3%(n&f~oCu~hprOgSM8EKWrBSvj5lJ!>mUdIXd6^~d) ztD#7Ut@O1TlU#K|WJo7`oC~b(@?)B(7!@fb{B@>!Mg!xuBJYTFCX@`AU#j?}JARd= zNuIG-7`OAN=k01jrAm4zodQ@{;G#rv--NA_GlYXvaww2As?q;WBq)S2$)i&14IOj2WJ>rvq zHPfhnIu@{q+;*$onBS;e^4(oL4oRFkO;Ns~=Vm=k(5X#^?R7?`e%NbzwRxVc4$t8= z5rK&sE%KwRpWS`4%R)`5YaKeU==wOoMGPdDNPr~Z! zBw#7&vx1sQiG}+-!c(k_d72voy*%W3Y9=JVes;ngB8gdu)yj^A-IT;&L>l=Lj$vq- L5%C$7*<$_x{u~}^ delta 312 zcmbQiv79;lo)F7a1|VPtVi_Pd0dbIk50K3Q#J)hx3dBJ`?8wN#5CP@S0;*uY z!6P-NfFT}4PTs&MS|8x(?Ct38su1QH6zu8m#}(ioqU&6gnpl#VpQr1RSdwa`U}Ruu zple{EYiO)sU}9xxpzZ7$90F9R8S&UE@>FOAy>+7%U;;7)^Z{_Q$9p&%m%H@+- zT%sFNl$ckXlUR~pWToI1>f@u}=jiLIVB_j*;OOb&;OOEKu6re1zgy4~asCR66plC;SOnB+KI{ha+>JpJ4!YcebHdSvFL Jr2>5hrU0S8N>Ts- From 62bd04661a63ecd9feb13dacfc4db1c82b9646a9 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Thu, 26 Aug 2010 20:08:34 +0200 Subject: [PATCH 285/641] fix typo in config example and .py --- pyfpdb/Configuration.py | 4 ++-- pyfpdb/HUD_config.xml.example | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 980fc8e5..f89c318a 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -525,12 +525,12 @@ class General(dict): except KeyError: self["version"]=0 self["ui_language"]="system" - self["config_difficuly"]="expert" + self["config_difficulty"]="expert" def get_defaults(self): self["version"]=0 self["ui_language"]="system" - self["config_difficuly"]="expert" + self["config_difficulty"]="expert" self["config_wrap_len"]="-1" self["day_start"]="5" diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index fca23a39..068a5c61 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -9,7 +9,7 @@ config_wrap_len="-1" day_start="5" ui_language="system" - config_difficuly="expert" + config_difficulty="expert" /> From 4954299061ec4c08a1e72f8ee86dd2c9e8775690 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Thu, 26 Aug 2010 21:24:40 +0100 Subject: [PATCH 286/641] add default attribute to appropriate database element if missing --- pyfpdb/Configuration.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 29b74b54..1349581d 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -688,6 +688,7 @@ class Config: raise ValueError("Database names must be unique") if self.db_selected is None or db.db_selected: self.db_selected = db.db_name + db_node.setAttribute("default", "True") self.supported_databases[db.db_name] = db #TODO: if the user may passes '' (empty string) as database name via command line, his choice is ignored # ..when we parse the xml we allow for ''. there has to be a decission if to allow '' or not @@ -972,9 +973,10 @@ class Config: if db_user is not None: db_node.setAttribute("db_user", db_user) if db_pass is not None: db_node.setAttribute("db_pass", db_pass) if db_server is not None: db_node.setAttribute("db_server", db_server) - if defaultb: db_node.setAttribute("default", default) + if defaultb or self.db_selected == db_name: + db_node.setAttribute("default", True) elif db_node.hasAttribute("default"): - db_node.removeAttribute("default") + db_node.removeAttribute("default") if self.supported_databases.has_key(db_name): if db_desc is not None: self.supported_databases[db_name].dp_desc = db_desc if db_ip is not None: self.supported_databases[db_name].dp_ip = db_ip From a28b0d8dbb0a4aecfff42fd9466830d07f5aaba0 Mon Sep 17 00:00:00 2001 From: gimick Date: Thu, 26 Aug 2010 22:11:42 +0100 Subject: [PATCH 287/641] py2exe: restructure - .906 locale changes, now builds in packaging/windows --- .../windows/py2exeWalkthroughPython26.txt | 477 +++++++++--------- {pyfpdb => packaging/windows}/py2exe_setup.py | 198 ++++---- 2 files changed, 324 insertions(+), 351 deletions(-) rename {pyfpdb => packaging/windows}/py2exe_setup.py (55%) diff --git a/packaging/windows/py2exeWalkthroughPython26.txt b/packaging/windows/py2exeWalkthroughPython26.txt index b023d80d..c4f0b66b 100644 --- a/packaging/windows/py2exeWalkthroughPython26.txt +++ b/packaging/windows/py2exeWalkthroughPython26.txt @@ -1,239 +1,238 @@ -PY2EXE walkthrough for Python 2.6 & FPDB 0.20 -created on 22nd June 2010 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 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.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi -pywin 214 ... http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.6.exe/download -matplotlib 0.99.3 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.3/matplotlib-0.99.3.win32-py2.6.exe/download -pygtk 2.16.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe -pycairo 1.8.6 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.6.win32-py2.6.exe -pyGobject 2.20.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe -py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.6.exe/download -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) - - -1.2/ MySQL - -MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://www.mediafire.com/file/iodnnnznmj1/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe - -This is an intaller built from source by gimick. There are no official mysql-python2.6 builds for windows. - -Community builds are also available from some developers. see www.codegood.com for example. - - -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 gmail.com> on the py2exe mailing list for documenting this problem and solution. - -1.3.1/ Navigate to C:\Python26\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 - - - -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+ all in one 2.20.0 ... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.0-20100406_win32.zip - -2.3/ If everything has worked, you should have c:\GTK\bin \etc \lib \src and so on created. - - -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 - - -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 downloaded. - -5.3.1/ download the package to the Desktop - -numpy 1.4.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.4.1/numpy-1.4.1-win32-superpack-python2.6.exe/download - -5.3.2/ remove any existing numpy installation - -Go to the control panel and uninstall "Python2.6 numpy-1.4.1" - -5.3.3/ If you are wanting to build a package which works on all CPU's, install noSSE as follows: - -dos> cd Desktop -dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch nosse - -5.3.4/ If you are wanting to build a package which works on SSE2 and better CPU's, install SSE2 as follows: - -dos> cd Desktop -dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch sse2 - -5.3.4/ At the end of the installation, click on "show details" to confirm the installation. - -For no SSE: - -"Target CPU handles SSE2" -"Target CPU handles SSE3" -"nosse install (arch value: nosse)" -"Install NO SSE" -Extract: numpy-1.4.1-nosse.exe... 100% -Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-nosse.exe" -Completed - -For SSE2: - -"Target CPU handles SSE2" -"Target CPU handles SSE3" -"sse2 install (arch value: sse2)" -"Install SSE 2" -Extract: numpy-1.4.1-sse2.exe... 100% -Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-sse2.exe" -Completed - - -Step 6 Run py2exe to generate fpdb.exe --------------------------------------- - -6.1/ Run the script to create the fpdb.exe bundle - -dos> cd Desktop\fpdb\pyfpdb -dos> c:\python26\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. -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:\Python26\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. -As far as I know you cannot rerun the build if the fpdb-yyyymmdd-exe exists in the tree, so dragging this out -also allows the build to re-run at step 6. - -8.1/ Drag Desktop\fpdb\pyfpdb\fpdb-yyyymmdd-exe to Desktop\ - - -Step 9 Initial run ------------------- - -9.1/ Open the Desktop\fpdb-yyyymmdd-exe 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 pruning ---------------- - -11.1/ The generated folder is 100+MB and can be pruned by removing the following directories: - -pyfpdb/lib/glib-2.0 -pyfpdb/lib/pkgconfig -pyfpdb/share/aclocal -pyfpdb/share/doc -pyfpdb/share/glib-2.0 -pyfpdb/share/gtk-2.0 -pyfpdb/share/gtk-doc -pyfpdb/share/locale -pyfpdb/share/man - - -Step 12 rename folder ---------------------- - -Rename the folder to something meaningful to the community. If you have built for NoSSE, append anyCPU to the directory name. - - -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 - -Step 14 If you need to build again for a different SSE level ------------------------------------------------------------- - -Go back to step 5 and run again. - +PY2EXE walkthrough for Python 2.6 & FPDB 0.20 +created on 22nd June 2010 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 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.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi +pywin 214 ... http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.6.exe/download +matplotlib 0.99.3 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.3/matplotlib-0.99.3.win32-py2.6.exe/download +pygtk 2.16.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe +pycairo 1.8.6 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.6.win32-py2.6.exe +pyGobject 2.20.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe +py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.6.exe/download +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) + + +1.2/ MySQL + +MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://www.mediafire.com/file/iodnnnznmj1/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe + +This is an intaller built from source by gimick. There are no official mysql-python2.6 builds for windows. + +Community builds are also available from some developers. see www.codegood.com for example. + + +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 gmail.com> on the py2exe mailing list for documenting this problem and solution. + +1.3.1/ Navigate to C:\Python26\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 + + + +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+ all in one 2.20.0 ... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.0-20100406_win32.zip + +2.3/ If everything has worked, you should have c:\GTK\bin \etc \lib \src and so on created. + + +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 downloaded. + +5.3.1/ download the package to the Desktop + +numpy 1.4.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.4.1/numpy-1.4.1-win32-superpack-python2.6.exe/download + +5.3.2/ remove any existing numpy installation + +Go to the control panel and uninstall "Python2.6 numpy-1.4.1" + +5.3.3/ If you are wanting to build a package which works on all CPU's, install noSSE as follows: + +dos> cd Desktop +dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch nosse + +5.3.4/ If you are wanting to build a package which works on SSE2 and better CPU's, install SSE2 as follows: + +dos> cd Desktop +dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch sse2 + +5.3.4/ At the end of the installation, click on "show details" to confirm the installation. + +For no SSE: + +"Target CPU handles SSE2" +"Target CPU handles SSE3" +"nosse install (arch value: nosse)" +"Install NO SSE" +Extract: numpy-1.4.1-nosse.exe... 100% +Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-nosse.exe" +Completed + +For SSE2: + +"Target CPU handles SSE2" +"Target CPU handles SSE3" +"sse2 install (arch value: sse2)" +"Install SSE 2" +Extract: numpy-1.4.1-sse2.exe... 100% +Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-sse2.exe" +Completed + + +Step 6 Run py2exe to generate fpdb.exe +-------------------------------------- + +6.1/ Run the script to create the fpdb.exe bundle + +dos> cd Desktop\fpdb\packaging\windows +dos> c:\python26\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. +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:\Python26\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 pruning +--------------- + +11.1/ The generated folder is 100+MB and can be pruned by removing the following directories: + +pyfpdb/lib/glib-2.0 +pyfpdb/lib/pkgconfig +pyfpdb/share/aclocal +pyfpdb/share/doc +pyfpdb/share/glib-2.0 +pyfpdb/share/gtk-2.0 +pyfpdb/share/gtk-doc +pyfpdb/share/locale +pyfpdb/share/man + + +Step 12 rename folder +--------------------- + +If needed, rename the folder to something meaningful to the community. If you have built for NoSSE, append anyCPU to the directory name. + + +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 + +Step 14 If you need to build again for a different SSE level +------------------------------------------------------------ + +Go back to step 5 and run again. + diff --git a/pyfpdb/py2exe_setup.py b/packaging/windows/py2exe_setup.py similarity index 55% rename from pyfpdb/py2exe_setup.py rename to packaging/windows/py2exe_setup.py index 9dbda8dd..8bf723a4 100644 --- a/pyfpdb/py2exe_setup.py +++ b/packaging/windows/py2exe_setup.py @@ -32,14 +32,10 @@ Py2exe script for fpdb. #HOW TO USE this script: # -#- cd to the folder where this script is stored, usually .../pyfpdb. -# [If there are build and dist subfolders present , delete them to get -# rid of earlier builds. Update: script now does this for you] -#- Run the script with "py2exe_setup.py py2exe" -#- You will frequently get messages about missing .dll files. E. g., -# MSVCP90.dll. These are somewhere in your windows install, so you -# can just copy them to your working folder. (or just assume other -# person will have them? any copyright issues with including them?) +#- cd to the folder where this script is stored, usually ...packaging/windows +#- Run the script with python "py2exe_setup.py py2exe" +#- You will frequently get messages about missing .dll files.just assume other +# person will have them? we have copyright issues including some dll's #- If it works, you'll have a new dir fpdb-YYYYMMDD-exe which should # contain 2 dirs; gfx and pyfpdb and run_fpdb.bat #- [ This bit is now automated: @@ -49,27 +45,11 @@ Py2exe script for fpdb. #- 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) -# sqlcoder notes: this worked for me with the following notes: -#- I used the following versions: -# python 2.5.4 -# gtk+ 2.14.7 (gtk_2.14.7-20090119) -# pycairo 1.4.12-2 -# pygobject 2.14.2-2 -# pygtk 2.12.1-3 -# matplotlib 0.98.3 -# numpy 1.4.0 -# py2exe-0.6.9 for python 2.5 -# -#- I also copied these dlls manually from /bin to /dist : -# -# libgobject-2.0-0.dll -# libgdk-win32-2.0-0.dll -# -# Now updated to work with python 2.6 + related dependencies # See walkthrough in packaging directory for versions used -# Updates to this script have broken python 2.5 compatibility (gio module, msvcr71 references now msvcp90) # 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 + import os import sys @@ -86,33 +66,14 @@ import py2exe import glob import matplotlib import shutil -from datetime import date +#from datetime import date -origIsSystemDLL = py2exe.build_exe.isSystemDLL def isSystemDLL(pathname): #dwmapi appears to be vista-specific file, not XP if os.path.basename(pathname).lower() in ("dwmapi.dll"): return 0 return origIsSystemDLL(pathname) -py2exe.build_exe.isSystemDLL = isSystemDLL - - -def remove_tree(top): - # Delete everything reachable from the directory named in 'top', - # assuming there are no symbolic links. - # CAUTION: This is dangerous! For example, if top == '/', it - # could delete all your disk files. - # sc: Nicked this from somewhere, added the if statement to try - # make it a bit safer - if top in ('build','dist','pyfpdb',dist_dirname) and os.path.basename(os.getcwd()) == 'pyfpdb': - #print "removing directory '"+top+"' ..." - for root, dirs, files in os.walk(top, topdown=False): - for name in files: - os.remove(os.path.join(root, name)) - for name in dirs: - os.rmdir(os.path.join(root, name)) - os.rmdir(top) def test_and_remove(top): if os.path.exists(top): @@ -121,31 +82,64 @@ def test_and_remove(top): else: print "Unexpected file '"+top+"' found. Exiting." exit() + +def remove_tree(top): + # Delete everything reachable from the directory named in 'top', + # assuming there are no symbolic links. + # CAUTION: This is dangerous! For example, if top == '/', it + # could delete all your disk files. + # sc: Nicked this from somewhere, added the if statement to try + # make it a bit safer + if top in ('build','dist',distdir) and os.path.basename(os.getcwd()) == 'windows': + #print "removing directory '"+top+"' ..." + for root, dirs, files in os.walk(top, topdown=False): + for name in files: + os.remove(os.path.join(root, name)) + for name in dirs: + os.rmdir(os.path.join(root, name)) + os.rmdir(top) -today = date.today().strftime('%Y%m%d') -print "\n" + r"Output will be created in \pyfpdb\ and \fpdb_"+today+'\\' -#print "Enter value for XXX (any length): ", # the comma means no newline -#xxx = sys.stdin.readline().rstrip() -dist_dirname = r'fpdb-' + today + '-exe' -dist_dir = r'..\fpdb-' + today + '-exe' -print +def copy_tree(source,destination): + source = source.replace('\\', '\\\\') + destination = destination.replace('\\', '\\\\') + print "*** Copying " + source + " to " + destination + " ***" + shutil.copytree( source, destination ) -# remove build and dist dirs if they exist +def copy_file(source,destination): + source = source.replace('\\', '\\\\') + destination = destination.replace('\\', '\\\\') + print "*** Copying " + source + " to " + destination + " ***" + shutil.copy( source, destination ) + + +fpdbver = '0.20.906' + +distdir = r'fpdb-' + fpdbver +rootdir = r'../../' #cwd is normally /packaging/windows +pydir = rootdir+'pyfpdb/' +gfxdir = rootdir+'gfx/' +sys.path.append( pydir ) # allows fpdb modules to be found by options/includes below + +print "\n" + r"Output will be created in "+distdir + +print "*** Cleaning working folders ***" test_and_remove('dist') test_and_remove('build') -test_and_remove('pyfpdb') +test_and_remove(distdir) -test_and_remove(dist_dirname) +print "*** Building now in dist folder ***" +origIsSystemDLL = py2exe.build_exe.isSystemDLL +py2exe.build_exe.isSystemDLL = isSystemDLL setup( name = 'fpdb', description = 'Free Poker DataBase', - version = '0.20.903', + version = fpdbver, - windows = [ {'script': 'fpdb.pyw', "icon_resources": [(1, "../gfx/fpdb_large_icon.ico")]}, - {'script': 'HUD_main.pyw', }, - {'script': 'Configuration.py', } + windows = [ {'script': pydir+'fpdb.pyw', "icon_resources": [(1, gfxdir+"fpdb_large_icon.ico")]}, + {'script': pydir+'HUD_main.pyw', }, + {'script': pydir+'Configuration.py', } ], options = {'py2exe': { @@ -158,74 +152,56 @@ setup( ,'PartyPokerToFpdb', 'PokerStarsToFpdb' ,'UltimateBetToFpdb', 'Win2dayToFpdb' ], - 'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'], # surely we need this? '_gtkagg' + 'excludes' : ['_tkagg', '_agg2', 'cocoaagg', 'fltkagg'], 'dll_excludes': ['libglade-2.0-0.dll', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll' , 'msvcr90.dll', 'MSVCP90.dll', 'MSVCR90.dll','msvcr90.dll'], # these are vis c / c++ runtimes, and must not be redistributed } }, # files in 2nd value in tuple are moved to dir named in 1st value - #data_files updated for new locations of licences + readme nolonger exists - data_files = [('', ['HUD_config.xml.example', 'Cards01.png', 'logging.conf', '../agpl-3.0.txt', '../fdl-1.2.txt', '../gpl-3.0.txt', '../gpl-2.0.txt', '../mit.txt', '../readme.txt']) - ,(dist_dir, [r'..\run_fpdb.bat']) - ,( dist_dir + r'\gfx', glob.glob(r'..\gfx\*.*') ) - # line below has problem with fonts subdir ('not a regular file') - #,(r'matplotlibdata', glob.glob(r'c:\python25\Lib\site-packages\matplotlib\mpl-data\*')) + # this code will not walk a tree + # Note: cwd for 1st value is packaging/windows/dist (this is confusing BTW) + # Note: only include files here which are to be put into the package pyfpdb folder or subfolders + + data_files = [('', glob.glob(rootdir+'*.txt')) + ,('', [pydir+'HUD_config.xml.example',pydir+'Cards01.png', pydir+'logging.conf']) ] + matplotlib.get_py2exe_datafiles() ) -# rename completed output package as pyfpdb -os.rename('dist', 'pyfpdb') +# ,(distdir, [rootdir+'run_fpdb.bat']) +# ,(distdir+r'\gfx', glob.glob(gfxdir+'*.*')) +# ] + +print "*** py2exe build phase complete ***" -# pull pytz zoneinfo into pyfpdb package folder -src_dir = r'c:\python26\Lib\site-packages\pytz\zoneinfo' -src_dir = src_dir.replace('\\', '\\\\') -dest_dir = os.path.join(r'pyfpdb', 'zoneinfo') -shutil.copytree( src_dir, dest_dir ) +# 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 (pydir+r'locale', os.path.join(r'dist', 'locale')) -# shunt pyfpdb package over to the distribution folder -dest = os.path.join(dist_dirname, 'pyfpdb') -# print "try renaming pyfpdb to", dest -dest = dest.replace('\\', '\\\\') -# print "dest is now", dest -os.rename( 'pyfpdb', dest ) +# create distribution folder and populate with gfx + bat +copy_tree (gfxdir, os.path.join(distdir, 'gfx')) +copy_file (rootdir+'run_fpdb.bat', distdir) -# prompt for gtk location +print "*** Renaming dist folder as distribution pyfpdb folder ***" +dest = os.path.join(distdir, 'pyfpdb') +os.rename( 'dist', dest ) +print "*** copying GTK runtime ***" gtk_dir = "" while not os.path.exists(gtk_dir): - print "Enter directory name for GTK (e.g. c:\code\gtk_2.14.7-20090119)\n: ", # the comma means no newline + print "Enter directory name for GTK (e.g. c:/gtk) : ", # the comma means no newline gtk_dir = sys.stdin.readline().rstrip() -print "\ncopying files and dirs from ", gtk_dir, "to", dest.replace('\\\\', '\\'), "..." -src = os.path.join(gtk_dir, 'bin', 'libgdk-win32-2.0-0.dll') -src = src.replace('\\', '\\\\') -shutil.copy( src, dest ) +print "*** copying GTK runtime ***" +dest = os.path.join(distdir, 'pyfpdb') +copy_file(os.path.join(gtk_dir, 'bin', 'libgdk-win32-2.0-0.dll'), dest ) +copy_file(os.path.join(gtk_dir, 'bin', 'libgobject-2.0-0.dll'), dest) +copy_tree(os.path.join(gtk_dir, 'etc'), os.path.join(dest, 'etc')) +copy_tree(os.path.join(gtk_dir, 'lib'), os.path.join(dest, 'lib')) +copy_tree(os.path.join(gtk_dir, 'share'), os.path.join(dest, 'share')) -src = os.path.join(gtk_dir, 'bin', 'libgobject-2.0-0.dll') -src = src.replace('\\', '\\\\') -shutil.copy( src, dest ) - -src_dir = os.path.join(gtk_dir, 'etc') -src_dir = src_dir.replace('\\', '\\\\') -dest_dir = os.path.join(dest, 'etc') -dest_dir = dest_dir.replace('\\', '\\\\') -shutil.copytree( src_dir, dest_dir ) - -src_dir = os.path.join(gtk_dir, 'lib') -src_dir = src_dir.replace('\\', '\\\\') -dest_dir = os.path.join(dest, 'lib') -dest_dir = dest_dir.replace('\\', '\\\\') -shutil.copytree( src_dir, dest_dir ) - -src_dir = os.path.join(gtk_dir, 'share') -src_dir = src_dir.replace('\\', '\\\\') -dest_dir = os.path.join(dest, 'share') -dest_dir = dest_dir.replace('\\', '\\\\') -shutil.copytree( src_dir, dest_dir ) - -print "\nIf py2exe was successful you should now have a new dir" -print dist_dirname+" in your pyfpdb dir" +print "*** All done! ***" +test_and_remove('build') +print distdir+" is in the pyfpdb dir" print """ The following dirs can probably removed to make the final package smaller: @@ -243,5 +219,3 @@ pyfpdb/share/themes/Default Use 7-zip to zip up the distribution and create a self extracting archive and that's it! """ - - From 709f4a2dfb18f1af4dd5baca8890e0217121b3ea Mon Sep 17 00:00:00 2001 From: gimick Date: Thu, 26 Aug 2010 22:18:45 +0100 Subject: [PATCH 288/641] py2exe: fix Walkthrough file encoding --- .../windows/py2exeWalkthroughPython26.txt | 476 +++++++++--------- 1 file changed, 238 insertions(+), 238 deletions(-) diff --git a/packaging/windows/py2exeWalkthroughPython26.txt b/packaging/windows/py2exeWalkthroughPython26.txt index c4f0b66b..68a74c81 100644 --- a/packaging/windows/py2exeWalkthroughPython26.txt +++ b/packaging/windows/py2exeWalkthroughPython26.txt @@ -1,238 +1,238 @@ -PY2EXE walkthrough for Python 2.6 & FPDB 0.20 -created on 22nd June 2010 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 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.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi -pywin 214 ... http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.6.exe/download -matplotlib 0.99.3 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.3/matplotlib-0.99.3.win32-py2.6.exe/download -pygtk 2.16.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe -pycairo 1.8.6 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.6.win32-py2.6.exe -pyGobject 2.20.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe -py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.6.exe/download -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) - - -1.2/ MySQL - -MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://www.mediafire.com/file/iodnnnznmj1/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe - -This is an intaller built from source by gimick. There are no official mysql-python2.6 builds for windows. - -Community builds are also available from some developers. see www.codegood.com for example. - - -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 gmail.com> on the py2exe mailing list for documenting this problem and solution. - -1.3.1/ Navigate to C:\Python26\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 - - - -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+ all in one 2.20.0 ... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.0-20100406_win32.zip - -2.3/ If everything has worked, you should have c:\GTK\bin \etc \lib \src and so on created. - - -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 downloaded. - -5.3.1/ download the package to the Desktop - -numpy 1.4.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.4.1/numpy-1.4.1-win32-superpack-python2.6.exe/download - -5.3.2/ remove any existing numpy installation - -Go to the control panel and uninstall "Python2.6 numpy-1.4.1" - -5.3.3/ If you are wanting to build a package which works on all CPU's, install noSSE as follows: - -dos> cd Desktop -dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch nosse - -5.3.4/ If you are wanting to build a package which works on SSE2 and better CPU's, install SSE2 as follows: - -dos> cd Desktop -dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch sse2 - -5.3.4/ At the end of the installation, click on "show details" to confirm the installation. - -For no SSE: - -"Target CPU handles SSE2" -"Target CPU handles SSE3" -"nosse install (arch value: nosse)" -"Install NO SSE" -Extract: numpy-1.4.1-nosse.exe... 100% -Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-nosse.exe" -Completed - -For SSE2: - -"Target CPU handles SSE2" -"Target CPU handles SSE3" -"sse2 install (arch value: sse2)" -"Install SSE 2" -Extract: numpy-1.4.1-sse2.exe... 100% -Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-sse2.exe" -Completed - - -Step 6 Run py2exe to generate fpdb.exe --------------------------------------- - -6.1/ Run the script to create the fpdb.exe bundle - -dos> cd Desktop\fpdb\packaging\windows -dos> c:\python26\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. -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:\Python26\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 pruning ---------------- - -11.1/ The generated folder is 100+MB and can be pruned by removing the following directories: - -pyfpdb/lib/glib-2.0 -pyfpdb/lib/pkgconfig -pyfpdb/share/aclocal -pyfpdb/share/doc -pyfpdb/share/glib-2.0 -pyfpdb/share/gtk-2.0 -pyfpdb/share/gtk-doc -pyfpdb/share/locale -pyfpdb/share/man - - -Step 12 rename folder ---------------------- - -If needed, rename the folder to something meaningful to the community. If you have built for NoSSE, append anyCPU to the directory name. - - -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 - -Step 14 If you need to build again for a different SSE level ------------------------------------------------------------- - -Go back to step 5 and run again. - +PY2EXE walkthrough for Python 2.6 & FPDB 0.20 +created on 22nd June 2010 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 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.6.5 ... http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi +pywin 214 ... http://sourceforge.net/projects/pywin32/files/pywin32/Build%20214/pywin32-214.win32-py2.6.exe/download +matplotlib 0.99.3 ... http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.3/matplotlib-0.99.3.win32-py2.6.exe/download +pygtk 2.16.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.16/pygtk-2.16.0.win32-py2.6.exe +pycairo 1.8.6 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.8/pycairo-1.8.6.win32-py2.6.exe +pyGobject 2.20.0 ... http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.20/pygobject-2.20.0.win32-py2.6.exe +py2exe 0.6.9 ... http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.6.exe/download +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) + + +1.2/ MySQL + +MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe ... http://www.mediafire.com/file/iodnnnznmj1/MySQL-python-1.2.3.win32-py2.6-fpdb0.20.exe + +This is an intaller built from source by gimick. There are no official mysql-python2.6 builds for windows. + +Community builds are also available from some developers. see www.codegood.com for example. + + +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 gmail.com> on the py2exe mailing list for documenting this problem and solution. + +1.3.1/ Navigate to C:\Python26\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 + + + +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+ all in one 2.20.0 ... http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.0-20100406_win32.zip + +2.3/ If everything has worked, you should have c:\GTK\bin \etc \lib \src and so on created. + + +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 downloaded. + +5.3.1/ download the package to the Desktop + +numpy 1.4.1 ... http://sourceforge.net/projects/numpy/files/NumPy/1.4.1/numpy-1.4.1-win32-superpack-python2.6.exe/download + +5.3.2/ remove any existing numpy installation + +Go to the control panel and uninstall "Python2.6 numpy-1.4.1" + +5.3.3/ If you are wanting to build a package which works on all CPU's, install noSSE as follows: + +dos> cd Desktop +dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch nosse + +5.3.4/ If you are wanting to build a package which works on SSE2 and better CPU's, install SSE2 as follows: + +dos> cd Desktop +dos> numpy-1.4.1-win32-superpack-python2.6.exe /arch sse2 + +5.3.4/ At the end of the installation, click on "show details" to confirm the installation. + +For no SSE: + +"Target CPU handles SSE2" +"Target CPU handles SSE3" +"nosse install (arch value: nosse)" +"Install NO SSE" +Extract: numpy-1.4.1-nosse.exe... 100% +Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-nosse.exe" +Completed + +For SSE2: + +"Target CPU handles SSE2" +"Target CPU handles SSE3" +"sse2 install (arch value: sse2)" +"Install SSE 2" +Extract: numpy-1.4.1-sse2.exe... 100% +Execute: "C:\DOCUME~1\user\LOCALS~1\Temp\numpy-1.4.1-sse2.exe" +Completed + + +Step 6 Run py2exe to generate fpdb.exe +-------------------------------------- + +6.1/ Run the script to create the fpdb.exe bundle + +dos> cd Desktop\fpdb\packaging\windows +dos> c:\python26\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. +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:\Python26\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 pruning +--------------- + +11.1/ The generated folder is 100+MB and can be pruned by removing the following directories: + +pyfpdb/lib/glib-2.0 +pyfpdb/lib/pkgconfig +pyfpdb/share/aclocal +pyfpdb/share/doc +pyfpdb/share/glib-2.0 +pyfpdb/share/gtk-2.0 +pyfpdb/share/gtk-doc +pyfpdb/share/locale +pyfpdb/share/man + + +Step 12 rename folder +--------------------- + +If needed, rename the folder to something meaningful to the community. If you have built for NoSSE, append anyCPU to the directory name. + + +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 + +Step 14 If you need to build again for a different SSE level +------------------------------------------------------------ + +Go back to step 5 and run again. + From ef576cf21394913cafed4b63fd5450ab5bbd8f71 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Fri, 27 Aug 2010 00:00:42 +0200 Subject: [PATCH 289/641] update version to 0.20.906 --- pyfpdb/fpdb.pyw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 1c1ba4cb..adeb34c7 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -129,7 +129,7 @@ import Configuration import Exceptions import Stats -VERSION = "0.20.905 plus git" +VERSION = "0.20.906" class fpdb: From fb8b749677495074008ee4ac7b735cc250d71364 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Fri, 27 Aug 2010 01:28:29 +0200 Subject: [PATCH 290/641] ebuild: added LINGUAS_IT support, corrected the header, and reverted space indents to tabs --- packaging/gentoo/current_stable.ebuild | 3 +- packaging/gentoo/current_testing.ebuild | 71 +++++++++++++----------- packaging/gentoo/fpdb-9999.ebuild | 73 +++++++++++++------------ 3 files changed, 79 insertions(+), 68 deletions(-) diff --git a/packaging/gentoo/current_stable.ebuild b/packaging/gentoo/current_stable.ebuild index a62b2fe0..edc70791 100644 --- a/packaging/gentoo/current_stable.ebuild +++ b/packaging/gentoo/current_stable.ebuild @@ -1,6 +1,7 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# created by Steffen Schaumburg, steffen@schaumburger.info and Erki Ferenc, erkiferenc@gmail.com +# $Header: $ + EAPI="2" inherit eutils diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index 73bedd02..9741f2b8 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -1,6 +1,7 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# created by Steffen Schaumburg, steffen@schaumburger.info and Erki Ferenc, erkiferenc@gmail.com +# $Header: $ + EAPI="2" inherit eutils @@ -17,49 +18,53 @@ SLOT="0" KEYWORDS="~amd64 ~x86" #note: this should work on other architectures too, please send me your experiences -IUSE="graph mysql postgres sqlite linguas_hu" +IUSE="graph mysql postgres sqlite linguas_hu linguas_it" RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" DEPEND="${RDEPEND}" src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb - if use linguas_hu; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo - fi + if use linguas_hu; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo + fi - doins readme.txt + if use linguas_it; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo + fi - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + doins readme.txt - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} + + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs } pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." } diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index b3bfa9dc..683b3f45 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -1,6 +1,7 @@ # Copyright 1999-2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# created by Steffen Schaumburg, steffen@schaumburger.info and Erki Ferenc, erkiferenc@gmail.com +# $Header: $ + EAPI="2" inherit eutils @@ -18,53 +19,57 @@ SLOT="0" KEYWORDS="" #note: this should work on other architectures too, please send me your experiences -IUSE="graph mysql postgres sqlite linguas_hu" +IUSE="graph mysql postgres sqlite linguas_hu linguas_it" RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" DEPEND="${RDEPEND}" src_unpack() { - git_src_unpack + git_src_unpack } src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb - if use linguas_hu; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo - fi + if use linguas_hu; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo + fi - doins readme.txt + if use linguas_it; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo + fi - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + doins readme.txt - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} + + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs } pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." } From c664dfbbe339725113585770171810d2502b925a Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Thu, 26 Aug 2010 22:47:30 -0400 Subject: [PATCH 291/641] Get rid of obsolete import of obsolete Tables.py. --- pyfpdb/Hud.py | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index c394108c..99b65c00 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -55,7 +55,6 @@ else: def _(string): return string # FreePokerTools modules -import Tables # needed for testing only import Configuration import Stats import Mucked @@ -941,26 +940,3 @@ class Popup_window: # window.present() -if __name__== "__main__": - main_window = gtk.Window() - main_window.connect("destroy", destroy) - label = gtk.Label(_('Fake main window, blah blah, blah\nblah, blah')) - main_window.add(label) - main_window.show_all() - - c = Configuration.Config() - #tables = Tables.discover(c) - t = Tables.discover_table_by_name(c, "Corona") - if t is None: - print _("Table not found.") - db = Database.Database(c, 'fpdb', 'holdem') - - stat_dict = db.get_stats_from_hand(1) - -# for t in tables: - win = Hud(None, t, 10, 'holdem', c, db) # parent, table, max, poker_game, config, db_connection - win.create(1, c, stat_dict, None) # hand, config, stat_dict, cards): -# t.get_details() - win.update(8300, c) # self, hand, config): - - gtk.main() From 96d1ffe4fa47b283bcd40c63ec8cb882b55d42b8 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Thu, 26 Aug 2010 22:48:06 -0400 Subject: [PATCH 292/641] Remove obsolete and unused Tables.py. --- pyfpdb/Tables.py | 449 ----------------------------------------------- 1 file changed, 449 deletions(-) delete mode 100755 pyfpdb/Tables.py diff --git a/pyfpdb/Tables.py b/pyfpdb/Tables.py deleted file mode 100755 index 3ffc7d1a..00000000 --- a/pyfpdb/Tables.py +++ /dev/null @@ -1,449 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -"""Discover_Tables.py - -Inspects the currently open windows and finds those of interest to us--that is -poker table windows from supported sites. Returns a list -of Table_Window objects representing the windows found. -""" -# Copyright 2008-2010, Ray E. Barker - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# 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 - -######################################################################## - -# Standard Library modules -import os -import sys -import re - -import locale -lang=locale.getdefaultlocale()[0][0:2] -if lang=="en": - def _(string): return string -else: - import gettext - try: - trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) - trans.install() - except IOError: - def _(string): return string - -# Win32 modules -if os.name == 'nt': - import win32gui - import win32process - import win32api - import win32con - import win32security - -# FreePokerTools modules -import Configuration - -# Each TableWindow object must have the following attributes correctly populated: -# tw.name = the table name from the title bar, which must to match the table name -# from the corresponding hand history. -# tw.site = the site name, e.g. PokerStars, FullTilt. This must match the site -# name specified in the config file. -# tw.number = This is the system id number for the client table window in the -# format that the system presents it. This is Xid in Xwindows and -# hwnd in Microsoft Windows. -# tw.title = The full title from the window title bar. -# tw.width, tw.height = The width and height of the window in pixels. This is -# the internal width and height, not including the title bar and -# window borders. -# tw.x, tw.y = The x, y (horizontal, vertical) location of the window relative -# to the top left of the display screen. This also does not include the -# title bar and window borders. To put it another way, this is the -# screen location of (0, 0) in the working window. - -class Table_Window: - def __init__(self, info = {}): - if 'number' in info: self.number = info['number'] - if 'exe' in info: self.exe = info['exe'] - if 'width' in info: self.width = info['width'] - if 'height' in info: self.height = info['height'] - if 'x' in info: self.x = info['x'] - if 'y' in info: self.y = info['y'] - if 'site' in info: self.site = info['site'] - if 'title' in info: self.title = info['title'] - if 'name' in info: self.name = info['name'] - self.gdkhandle = None - - def __str__(self): -# __str__ method for testing - temp = 'TableWindow object\n' - temp = temp + " name = %s\n site = %s\n number = %s\n title = %s\n" % (self.name, self.site, self.number, self.title) -# temp = temp + " game = %s\n structure = %s\n max = %s\n" % (self.game, self.structure, self.max) - temp = temp + " width = %d\n height = %d\n x = %d\n y = %d\n" % (self.width, self.height, self.x, self.y) - if getattr(self, 'tournament', 0): - temp = temp + " tournament = %d\n table = %d" % (self.tournament, self.table) - return temp - -############################################################################ -# Top-level discovery routines--these are the modules interface -def discover(c): - """Dispatch routine for finding all potential poker client windows.""" - if os.name == 'posix': - tables = discover_posix(c) - elif os.name == 'nt': - tables = discover_nt(c) - elif os.name == 'mac': - tables = discover_mac(c) - else: - tables = {} - return tables - -def discover_table_by_name(c, tablename): - """Dispatch routine for finding poker client windows with the given name.""" - if os.name == 'posix': - info = discover_posix_by_name(c, tablename) - elif os.name == 'nt': - info = discover_nt_by_name(c, tablename) - elif os.name == 'mac': - info = discover_mac_by_name(c, tablename) - else: - return None - if info is None: - return None - return Table_Window(info) - -def discover_tournament_table(c, tour_number, tab_number): - """Dispatch routine for finding poker clients with tour and table number.""" - if os.name == 'posix': - info = discover_posix_tournament(c, tour_number, tab_number) - elif os.name == 'nt': - info = discover_nt_tournament(c, tour_number, tab_number) - elif os.name == 'mac': - info = discover_mac_tournament(c, tour_number, tab_number) - else: - return None - if info: - return Table_Window(info) - return None - -############################################################################# -# Posix (= XWindows) specific routines -def discover_posix(c): - """Poker client table window finder for posix/Linux = XWindows.""" - tables = {} - for listing in os.popen('xwininfo -root -tree').readlines(): -# xwininfo -root -tree -id 0xnnnnn gets the info on a single window - for s in c.get_supported_sites(): - params = c.get_site_parameters(s) - -# TODO: We need to make a list of phrases, shared between the WIndows and Unix code!!!!!! - if re.search(params['table_finder'], listing): - if 'Lobby' in listing: continue - if 'Instant Hand History' in listing: continue -# if '\"Full Tilt Poker\"' in listing: continue - if 'History for table:' in listing: continue - if 'has no name' in listing: continue - info = decode_xwininfo(c, listing) - if info['site'] is None: continue - if info['title'] == info['exe']: continue -# this appears to be a poker client, so make a table object for it - tw = Table_Window(info) - eval("%s(tw)" % params['decoder']) - tables[tw.name] = tw - return tables - -def discover_posix_by_name(c, tablename): - """Find an XWindows poker client of the given name.""" - for listing in os.popen('xwininfo -root -tree').readlines(): - if tablename in listing: - if 'History for table:' in listing: continue - info = decode_xwininfo(c, listing) - if not info['name'] == tablename: continue - return info - return None - -def discover_posix_tournament(c, t_number, s_number): - """Finds the X window for a client, given tournament and table nos.""" - search_string = "%s.+Table.+%s" % (t_number, s_number) - for listing in os.popen('xwininfo -root -tree').readlines(): - if re.search(search_string, listing): - return decode_xwininfo(c, listing) - return None - -def decode_xwininfo(c, info_string): - """Gets window parameters from xwinifo string--XWindows.""" - info = {} - mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', info_string) - if not mo: - return None - else: - info['number'] = int( mo.group(1), 0) - info['exe'] = mo.group(3) - info['width'] = int( mo.group(4) ) - info['height'] = int( mo.group(5) ) - info['x'] = int( mo.group(6) ) - info['y'] = int( mo.group(7) ) - info['site'] = get_site_from_exe(c, info['exe']) - info['title'] = re.sub('\"', '', mo.group(2)) - title_bits = re.split(' - ', info['title']) - info['name'] = clean_title(title_bits[0]) - return info - -############################################################################## -# NT (= Windows) specific routines -def discover_nt(c): - """ Poker client table window finder for Windows.""" -# -# I cannot figure out how to get the inside dimensions of the poker table -# windows. So I just assume all borders are 3 thick and all title bars -# are 29 high. No doubt this will be off when used with certain themes. -# - b_width = 3 - tb_height = 29 - titles = {} - tables = {} - win32gui.EnumWindows(win_enum_handler, titles) - for hwnd in titles: - if 'Logged In as' in titles[hwnd] and not 'Lobby' in titles[hwnd]: - if 'Full Tilt Poker' in titles[hwnd]: - continue - tw = Table_Window() - tw.number = hwnd - (x, y, width, height) = win32gui.GetWindowRect(hwnd) - tw.title = titles[hwnd] - tw.width = int( width ) - 2*b_width - tw.height = int( height ) - b_width - tb_height - tw.x = int( x ) + b_width - tw.y = int( y ) + tb_height - -# TODO: Isn't the site being determined by the EXE name it belongs to? is this section of code even useful? cleaning it anyway - if 'Logged In as' in titles[hwnd]: - tw.site = "PokerStars" - elif 'Logged In As' in titles[hwnd]: - tw.site = "Full Tilt" - else: - tw.site = "Unknown" - sys.stderr.write(_("Found unknown table = %s") % tw.title) - if tw.site != "Unknown": - eval("%s(tw)" % c.supported_sites[tw.site].decoder) - else: - tw.name = "Unknown" - tables[len(tables)] = tw - return tables - -def discover_nt_by_name(c, tablename): - """Finds poker client window with the given table name.""" - titles = {} - win32gui.EnumWindows(win_enum_handler, titles) - - for hwnd in titles: - #print "Tables.py: tablename =", tablename, "title =", titles[hwnd] - try: - # maybe it's better to make global titles[hwnd] decoding? - # this can blow up in XP on some windows, eg firefox displaying http://docs.python.org/tutorial/classes.html - if not tablename.lower() in titles[hwnd].decode(Configuration.LOCALE_ENCODING).lower(): - continue - except: - continue - if 'History for table:' in titles[hwnd]: continue # Everleaf Network HH viewer window - if 'HUD:' in titles[hwnd]: continue # FPDB HUD window - if 'Chat:' in titles[hwnd]: continue # Some sites (FTP? PS? Others?) have seperable or seperately constructed chat windows - if ' - Table ' in titles[hwnd]: continue # Absolute table Chat window.. sigh. TODO: Can we tell what site we're trying to discover for somehow in here, so i can limit this check just to AP searches? - temp = decode_windows(c, titles[hwnd], hwnd) - print _("attach to window"), temp - return temp - return None - -def discover_nt_tournament(c, tour_number, tab_number): - """Finds the Windows window handle for the given tournament/table.""" - search_string = "%s.+%s" % (tour_number, tab_number) - - titles ={} - win32gui.EnumWindows(win_enum_handler, titles) - for hwnd in titles: - # Some sites (FTP? PS? Others?) have seperable or seperately constructed chat windows - if 'Chat:' in titles[hwnd]: continue - # Everleaf Network HH viewer window - if 'History for table:' in titles[hwnd]: continue - # FPDB HUD window - if 'HUD:' in titles[hwnd]: continue - - if re.search(search_string, titles[hwnd]): - return decode_windows(c, titles[hwnd], hwnd) - return None - -def get_nt_exe(hwnd): - """Finds the name of the executable that the given window handle belongs to.""" - - # Request privileges to enable "debug process", so we can later use - # PROCESS_VM_READ, retardedly required to GetModuleFileNameEx() - priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY - hToken = win32security.OpenProcessToken (win32api.GetCurrentProcess(), - priv_flags) - # enable "debug process" - privilege_id = win32security.LookupPrivilegeValue(None, - win32security.SE_DEBUG_NAME) - old_privs = win32security.AdjustTokenPrivileges(hToken, 0, - [(privilege_id, - win32security.SE_PRIVILEGE_ENABLED)]) - - # Open the process, and query it's filename - processid = win32process.GetWindowThreadProcessId(hwnd) - pshandle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | - win32con.PROCESS_VM_READ, False, - processid[1]) - try: - exename = win32process.GetModuleFileNameEx(pshandle, 0) - except pywintypes.error: - # insert code to call GetProcessImageName if we can find it.. - # returning None from here will hopefully break all following code - exename = None - finally: - # clean up - win32api.CloseHandle(pshandle) - win32api.CloseHandle(hToken) - - return exename - -def decode_windows(c, title, hwnd): - """Gets window parameters from the window title and handle--Windows.""" - -# I cannot figure out how to get the inside dimensions of the poker table -# windows. So I just assume all borders are 3 thick and all title bars -# are 29 high. No doubt this will be off when used with certain themes. - b_width = 3 - tb_height = 29 - - info = {} - info['number'] = hwnd - info['title'] = re.sub('\"', '', title) - (x, y, width, height) = win32gui.GetWindowRect(hwnd) - - info['x'] = int(x) + b_width - info['y'] = int( y ) + tb_height - info['width'] = int( width ) - 2*b_width - info['height'] = int( height ) - b_width - tb_height - info['exe'] = get_nt_exe(hwnd) - print "get_nt_exe returned ", info['exe'] - # TODO: 'width' here is all sorts of screwed up. - - title_bits = re.split(' - ', info['title']) - info['name'] = title_bits[0] - info['site'] = get_site_from_exe(c, info['exe']) - - return info - -def win_enum_handler(hwnd, titles): - str = win32gui.GetWindowText(hwnd) - if str != "": - titles[hwnd] = win32gui.GetWindowText(hwnd) - -################################################################### -# Utility routines used by all the discoverers. -def get_site_from_exe(c, exe): - """Look up the site from config, given the exe.""" - for s in c.get_supported_sites(): - params = c.get_site_parameters(s) - if re.search(params['table_finder'], exe): - return params['site_name'] - return None - -def everleaf_decode_table(tw): -# 2 - Tournament ID: 573256 - NL Hold'em - 150/300 blinds - Good luck ! - [Connection is ...] - pass - -def pokerstars_decode_table(tw): -# Extract poker information from the window title. This is not needed for -# fpdb, since all that information is available in the db via new_hand_number. -# This is needed only when using the HUD with a backend less integrated. - title_bits = re.split(' - ', tw.title) - name = title_bits[0] - mo = re.search('Tournament (\d+) Table (\d+)', name) - if mo: - tw.tournament = int( mo.group(1) ) - tw.table = int( mo.group(2) ) - tw.name = name - else: - tw.tournament = None - tw.name = clean_title(name) - mo = re.search('(Razz|Stud H/L|Stud|Omaha H/L|Omaha|Hold\'em|5-Card Draw|Triple Draw 2-7 Lowball|Badugi)', tw.title) - - tw.game = mo.group(1).lower() - tw.game = re.sub('\'', '', tw.game) - tw.game = re.sub('h/l', 'hi/lo', tw.game) - - mo = re.search('(No Limit|Pot Limit)', tw.title) - if mo: - tw.structure = mo.group(1).lower() - else: - tw.structure = 'limit' - - tw.max = None - if tw.game in ('razz', 'stud', 'stud hi/lo'): - tw.max = 8 - elif tw.game in ('5-card draw', 'triple draw 2-7 lowball'): - tw.max = 6 - elif tw.game == 'holdem': - pass - elif tw.game in ('omaha', 'omaha hi/lo'): - pass - -def fulltilt_decode_table(tw): -# Extract poker information from the window title. This is not needed for -# fpdb, since all that information is available in the db via new_hand_number. -# This is needed only when using the HUD with a backend less integrated. - title_bits = re.split(' - ', tw.title) - name = title_bits[0] - tw.tournament = None - tw.name = clean_title(name) - -def clean_title(name): - """Clean the little info strings from the table name.""" -# these strings could go in a config file - for pattern in [' \(6 max\)', ' \(heads up\)', ' \(deep\)', - ' \(deep hu\)', ' \(deep 6\)', '\(6 max, deep\)', ' \(2\)', - ' \(edu\)', ' \(edu, 6 max\)', ' \(6\)', - ' \(speed\)', 'special', 'newVPP', - ' no all-in', ' fast', ',', ' 50BB min', '50bb min', '\s+$']: - name = re.sub(pattern, '', name) - name = name.rstrip() - return name - -########################################################################### -# Mac specific routines....all stubs for now -def discover_mac_tournament(c, tour_number, tab_number): - """Mac users need help.""" - return None - -def discover_mac(c): - """Poker client table window finder for Macintosh.""" - tables = {} - return tables - -def discover_mac_by_name(c, tablename): - """Oh, the humanity.""" - # again, i have no mac to test this on, sorry -eric - return None - -########################################################################### -# Main function used for testing -if __name__=="__main__": - c = Configuration.Config() - - print discover_table_by_name(c, "Torino") -# print discover_tournament_table(c, "118942908", "3") - - tables = discover(c) - for t in tables.keys(): - print tables[t] - - print _("press enter to continue") - sys.stdin.readline() From eef5fd28e81ec83c94fb878db41c36e221ca35c3 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Thu, 26 Aug 2010 22:52:16 -0400 Subject: [PATCH 293/641] FulltiltToFpdb: Throw exception when HandInfo reg ex doesn't match. --- pyfpdb/FulltiltToFpdb.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 4b5fbcfd..b235ed4d 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -208,8 +208,7 @@ class Fulltilt(HandHistoryConverter): if m is None: logging.info("Didn't match re_HandInfo") logging.info(hand.handText) - # Should this throw an exception? - CG - return None + raise FpdbParseError("No match in readHandInfo.") hand.handid = m.group('HID') hand.tablename = m.group('TABLE') From bbb21b4b4d1580cd9565e9d2adf7569cbb57b541 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Thu, 26 Aug 2010 22:52:16 -0400 Subject: [PATCH 294/641] FulltiltToFpdb: Throw exception when HandInfo reg ex doesn't match. --- pyfpdb/FulltiltToFpdb.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 4b5fbcfd..b235ed4d 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -208,8 +208,7 @@ class Fulltilt(HandHistoryConverter): if m is None: logging.info("Didn't match re_HandInfo") logging.info(hand.handText) - # Should this throw an exception? - CG - return None + raise FpdbParseError("No match in readHandInfo.") hand.handid = m.group('HID') hand.tablename = m.group('TABLE') From f5db60f23baf21e83da1c3df455a2452f68c75d3 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Thu, 26 Aug 2010 22:47:30 -0400 Subject: [PATCH 295/641] Get rid of obsolete import of obsolete Tables.py. --- pyfpdb/Hud.py | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index c394108c..99b65c00 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -55,7 +55,6 @@ else: def _(string): return string # FreePokerTools modules -import Tables # needed for testing only import Configuration import Stats import Mucked @@ -941,26 +940,3 @@ class Popup_window: # window.present() -if __name__== "__main__": - main_window = gtk.Window() - main_window.connect("destroy", destroy) - label = gtk.Label(_('Fake main window, blah blah, blah\nblah, blah')) - main_window.add(label) - main_window.show_all() - - c = Configuration.Config() - #tables = Tables.discover(c) - t = Tables.discover_table_by_name(c, "Corona") - if t is None: - print _("Table not found.") - db = Database.Database(c, 'fpdb', 'holdem') - - stat_dict = db.get_stats_from_hand(1) - -# for t in tables: - win = Hud(None, t, 10, 'holdem', c, db) # parent, table, max, poker_game, config, db_connection - win.create(1, c, stat_dict, None) # hand, config, stat_dict, cards): -# t.get_details() - win.update(8300, c) # self, hand, config): - - gtk.main() From 6b978b8290c0f69a47f9976a9318a93379c99fbd Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Thu, 26 Aug 2010 22:48:06 -0400 Subject: [PATCH 296/641] Remove obsolete and unused Tables.py. --- pyfpdb/Tables.py | 449 ----------------------------------------------- 1 file changed, 449 deletions(-) delete mode 100755 pyfpdb/Tables.py diff --git a/pyfpdb/Tables.py b/pyfpdb/Tables.py deleted file mode 100755 index 3ffc7d1a..00000000 --- a/pyfpdb/Tables.py +++ /dev/null @@ -1,449 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -"""Discover_Tables.py - -Inspects the currently open windows and finds those of interest to us--that is -poker table windows from supported sites. Returns a list -of Table_Window objects representing the windows found. -""" -# Copyright 2008-2010, Ray E. Barker - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# 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 - -######################################################################## - -# Standard Library modules -import os -import sys -import re - -import locale -lang=locale.getdefaultlocale()[0][0:2] -if lang=="en": - def _(string): return string -else: - import gettext - try: - trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) - trans.install() - except IOError: - def _(string): return string - -# Win32 modules -if os.name == 'nt': - import win32gui - import win32process - import win32api - import win32con - import win32security - -# FreePokerTools modules -import Configuration - -# Each TableWindow object must have the following attributes correctly populated: -# tw.name = the table name from the title bar, which must to match the table name -# from the corresponding hand history. -# tw.site = the site name, e.g. PokerStars, FullTilt. This must match the site -# name specified in the config file. -# tw.number = This is the system id number for the client table window in the -# format that the system presents it. This is Xid in Xwindows and -# hwnd in Microsoft Windows. -# tw.title = The full title from the window title bar. -# tw.width, tw.height = The width and height of the window in pixels. This is -# the internal width and height, not including the title bar and -# window borders. -# tw.x, tw.y = The x, y (horizontal, vertical) location of the window relative -# to the top left of the display screen. This also does not include the -# title bar and window borders. To put it another way, this is the -# screen location of (0, 0) in the working window. - -class Table_Window: - def __init__(self, info = {}): - if 'number' in info: self.number = info['number'] - if 'exe' in info: self.exe = info['exe'] - if 'width' in info: self.width = info['width'] - if 'height' in info: self.height = info['height'] - if 'x' in info: self.x = info['x'] - if 'y' in info: self.y = info['y'] - if 'site' in info: self.site = info['site'] - if 'title' in info: self.title = info['title'] - if 'name' in info: self.name = info['name'] - self.gdkhandle = None - - def __str__(self): -# __str__ method for testing - temp = 'TableWindow object\n' - temp = temp + " name = %s\n site = %s\n number = %s\n title = %s\n" % (self.name, self.site, self.number, self.title) -# temp = temp + " game = %s\n structure = %s\n max = %s\n" % (self.game, self.structure, self.max) - temp = temp + " width = %d\n height = %d\n x = %d\n y = %d\n" % (self.width, self.height, self.x, self.y) - if getattr(self, 'tournament', 0): - temp = temp + " tournament = %d\n table = %d" % (self.tournament, self.table) - return temp - -############################################################################ -# Top-level discovery routines--these are the modules interface -def discover(c): - """Dispatch routine for finding all potential poker client windows.""" - if os.name == 'posix': - tables = discover_posix(c) - elif os.name == 'nt': - tables = discover_nt(c) - elif os.name == 'mac': - tables = discover_mac(c) - else: - tables = {} - return tables - -def discover_table_by_name(c, tablename): - """Dispatch routine for finding poker client windows with the given name.""" - if os.name == 'posix': - info = discover_posix_by_name(c, tablename) - elif os.name == 'nt': - info = discover_nt_by_name(c, tablename) - elif os.name == 'mac': - info = discover_mac_by_name(c, tablename) - else: - return None - if info is None: - return None - return Table_Window(info) - -def discover_tournament_table(c, tour_number, tab_number): - """Dispatch routine for finding poker clients with tour and table number.""" - if os.name == 'posix': - info = discover_posix_tournament(c, tour_number, tab_number) - elif os.name == 'nt': - info = discover_nt_tournament(c, tour_number, tab_number) - elif os.name == 'mac': - info = discover_mac_tournament(c, tour_number, tab_number) - else: - return None - if info: - return Table_Window(info) - return None - -############################################################################# -# Posix (= XWindows) specific routines -def discover_posix(c): - """Poker client table window finder for posix/Linux = XWindows.""" - tables = {} - for listing in os.popen('xwininfo -root -tree').readlines(): -# xwininfo -root -tree -id 0xnnnnn gets the info on a single window - for s in c.get_supported_sites(): - params = c.get_site_parameters(s) - -# TODO: We need to make a list of phrases, shared between the WIndows and Unix code!!!!!! - if re.search(params['table_finder'], listing): - if 'Lobby' in listing: continue - if 'Instant Hand History' in listing: continue -# if '\"Full Tilt Poker\"' in listing: continue - if 'History for table:' in listing: continue - if 'has no name' in listing: continue - info = decode_xwininfo(c, listing) - if info['site'] is None: continue - if info['title'] == info['exe']: continue -# this appears to be a poker client, so make a table object for it - tw = Table_Window(info) - eval("%s(tw)" % params['decoder']) - tables[tw.name] = tw - return tables - -def discover_posix_by_name(c, tablename): - """Find an XWindows poker client of the given name.""" - for listing in os.popen('xwininfo -root -tree').readlines(): - if tablename in listing: - if 'History for table:' in listing: continue - info = decode_xwininfo(c, listing) - if not info['name'] == tablename: continue - return info - return None - -def discover_posix_tournament(c, t_number, s_number): - """Finds the X window for a client, given tournament and table nos.""" - search_string = "%s.+Table.+%s" % (t_number, s_number) - for listing in os.popen('xwininfo -root -tree').readlines(): - if re.search(search_string, listing): - return decode_xwininfo(c, listing) - return None - -def decode_xwininfo(c, info_string): - """Gets window parameters from xwinifo string--XWindows.""" - info = {} - mo = re.match('\s+([\dxabcdef]+) (.+):\s\(\"([a-zA-Z.]+)\".+ (\d+)x(\d+)\+\d+\+\d+ \+(\d+)\+(\d+)', info_string) - if not mo: - return None - else: - info['number'] = int( mo.group(1), 0) - info['exe'] = mo.group(3) - info['width'] = int( mo.group(4) ) - info['height'] = int( mo.group(5) ) - info['x'] = int( mo.group(6) ) - info['y'] = int( mo.group(7) ) - info['site'] = get_site_from_exe(c, info['exe']) - info['title'] = re.sub('\"', '', mo.group(2)) - title_bits = re.split(' - ', info['title']) - info['name'] = clean_title(title_bits[0]) - return info - -############################################################################## -# NT (= Windows) specific routines -def discover_nt(c): - """ Poker client table window finder for Windows.""" -# -# I cannot figure out how to get the inside dimensions of the poker table -# windows. So I just assume all borders are 3 thick and all title bars -# are 29 high. No doubt this will be off when used with certain themes. -# - b_width = 3 - tb_height = 29 - titles = {} - tables = {} - win32gui.EnumWindows(win_enum_handler, titles) - for hwnd in titles: - if 'Logged In as' in titles[hwnd] and not 'Lobby' in titles[hwnd]: - if 'Full Tilt Poker' in titles[hwnd]: - continue - tw = Table_Window() - tw.number = hwnd - (x, y, width, height) = win32gui.GetWindowRect(hwnd) - tw.title = titles[hwnd] - tw.width = int( width ) - 2*b_width - tw.height = int( height ) - b_width - tb_height - tw.x = int( x ) + b_width - tw.y = int( y ) + tb_height - -# TODO: Isn't the site being determined by the EXE name it belongs to? is this section of code even useful? cleaning it anyway - if 'Logged In as' in titles[hwnd]: - tw.site = "PokerStars" - elif 'Logged In As' in titles[hwnd]: - tw.site = "Full Tilt" - else: - tw.site = "Unknown" - sys.stderr.write(_("Found unknown table = %s") % tw.title) - if tw.site != "Unknown": - eval("%s(tw)" % c.supported_sites[tw.site].decoder) - else: - tw.name = "Unknown" - tables[len(tables)] = tw - return tables - -def discover_nt_by_name(c, tablename): - """Finds poker client window with the given table name.""" - titles = {} - win32gui.EnumWindows(win_enum_handler, titles) - - for hwnd in titles: - #print "Tables.py: tablename =", tablename, "title =", titles[hwnd] - try: - # maybe it's better to make global titles[hwnd] decoding? - # this can blow up in XP on some windows, eg firefox displaying http://docs.python.org/tutorial/classes.html - if not tablename.lower() in titles[hwnd].decode(Configuration.LOCALE_ENCODING).lower(): - continue - except: - continue - if 'History for table:' in titles[hwnd]: continue # Everleaf Network HH viewer window - if 'HUD:' in titles[hwnd]: continue # FPDB HUD window - if 'Chat:' in titles[hwnd]: continue # Some sites (FTP? PS? Others?) have seperable or seperately constructed chat windows - if ' - Table ' in titles[hwnd]: continue # Absolute table Chat window.. sigh. TODO: Can we tell what site we're trying to discover for somehow in here, so i can limit this check just to AP searches? - temp = decode_windows(c, titles[hwnd], hwnd) - print _("attach to window"), temp - return temp - return None - -def discover_nt_tournament(c, tour_number, tab_number): - """Finds the Windows window handle for the given tournament/table.""" - search_string = "%s.+%s" % (tour_number, tab_number) - - titles ={} - win32gui.EnumWindows(win_enum_handler, titles) - for hwnd in titles: - # Some sites (FTP? PS? Others?) have seperable or seperately constructed chat windows - if 'Chat:' in titles[hwnd]: continue - # Everleaf Network HH viewer window - if 'History for table:' in titles[hwnd]: continue - # FPDB HUD window - if 'HUD:' in titles[hwnd]: continue - - if re.search(search_string, titles[hwnd]): - return decode_windows(c, titles[hwnd], hwnd) - return None - -def get_nt_exe(hwnd): - """Finds the name of the executable that the given window handle belongs to.""" - - # Request privileges to enable "debug process", so we can later use - # PROCESS_VM_READ, retardedly required to GetModuleFileNameEx() - priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY - hToken = win32security.OpenProcessToken (win32api.GetCurrentProcess(), - priv_flags) - # enable "debug process" - privilege_id = win32security.LookupPrivilegeValue(None, - win32security.SE_DEBUG_NAME) - old_privs = win32security.AdjustTokenPrivileges(hToken, 0, - [(privilege_id, - win32security.SE_PRIVILEGE_ENABLED)]) - - # Open the process, and query it's filename - processid = win32process.GetWindowThreadProcessId(hwnd) - pshandle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | - win32con.PROCESS_VM_READ, False, - processid[1]) - try: - exename = win32process.GetModuleFileNameEx(pshandle, 0) - except pywintypes.error: - # insert code to call GetProcessImageName if we can find it.. - # returning None from here will hopefully break all following code - exename = None - finally: - # clean up - win32api.CloseHandle(pshandle) - win32api.CloseHandle(hToken) - - return exename - -def decode_windows(c, title, hwnd): - """Gets window parameters from the window title and handle--Windows.""" - -# I cannot figure out how to get the inside dimensions of the poker table -# windows. So I just assume all borders are 3 thick and all title bars -# are 29 high. No doubt this will be off when used with certain themes. - b_width = 3 - tb_height = 29 - - info = {} - info['number'] = hwnd - info['title'] = re.sub('\"', '', title) - (x, y, width, height) = win32gui.GetWindowRect(hwnd) - - info['x'] = int(x) + b_width - info['y'] = int( y ) + tb_height - info['width'] = int( width ) - 2*b_width - info['height'] = int( height ) - b_width - tb_height - info['exe'] = get_nt_exe(hwnd) - print "get_nt_exe returned ", info['exe'] - # TODO: 'width' here is all sorts of screwed up. - - title_bits = re.split(' - ', info['title']) - info['name'] = title_bits[0] - info['site'] = get_site_from_exe(c, info['exe']) - - return info - -def win_enum_handler(hwnd, titles): - str = win32gui.GetWindowText(hwnd) - if str != "": - titles[hwnd] = win32gui.GetWindowText(hwnd) - -################################################################### -# Utility routines used by all the discoverers. -def get_site_from_exe(c, exe): - """Look up the site from config, given the exe.""" - for s in c.get_supported_sites(): - params = c.get_site_parameters(s) - if re.search(params['table_finder'], exe): - return params['site_name'] - return None - -def everleaf_decode_table(tw): -# 2 - Tournament ID: 573256 - NL Hold'em - 150/300 blinds - Good luck ! - [Connection is ...] - pass - -def pokerstars_decode_table(tw): -# Extract poker information from the window title. This is not needed for -# fpdb, since all that information is available in the db via new_hand_number. -# This is needed only when using the HUD with a backend less integrated. - title_bits = re.split(' - ', tw.title) - name = title_bits[0] - mo = re.search('Tournament (\d+) Table (\d+)', name) - if mo: - tw.tournament = int( mo.group(1) ) - tw.table = int( mo.group(2) ) - tw.name = name - else: - tw.tournament = None - tw.name = clean_title(name) - mo = re.search('(Razz|Stud H/L|Stud|Omaha H/L|Omaha|Hold\'em|5-Card Draw|Triple Draw 2-7 Lowball|Badugi)', tw.title) - - tw.game = mo.group(1).lower() - tw.game = re.sub('\'', '', tw.game) - tw.game = re.sub('h/l', 'hi/lo', tw.game) - - mo = re.search('(No Limit|Pot Limit)', tw.title) - if mo: - tw.structure = mo.group(1).lower() - else: - tw.structure = 'limit' - - tw.max = None - if tw.game in ('razz', 'stud', 'stud hi/lo'): - tw.max = 8 - elif tw.game in ('5-card draw', 'triple draw 2-7 lowball'): - tw.max = 6 - elif tw.game == 'holdem': - pass - elif tw.game in ('omaha', 'omaha hi/lo'): - pass - -def fulltilt_decode_table(tw): -# Extract poker information from the window title. This is not needed for -# fpdb, since all that information is available in the db via new_hand_number. -# This is needed only when using the HUD with a backend less integrated. - title_bits = re.split(' - ', tw.title) - name = title_bits[0] - tw.tournament = None - tw.name = clean_title(name) - -def clean_title(name): - """Clean the little info strings from the table name.""" -# these strings could go in a config file - for pattern in [' \(6 max\)', ' \(heads up\)', ' \(deep\)', - ' \(deep hu\)', ' \(deep 6\)', '\(6 max, deep\)', ' \(2\)', - ' \(edu\)', ' \(edu, 6 max\)', ' \(6\)', - ' \(speed\)', 'special', 'newVPP', - ' no all-in', ' fast', ',', ' 50BB min', '50bb min', '\s+$']: - name = re.sub(pattern, '', name) - name = name.rstrip() - return name - -########################################################################### -# Mac specific routines....all stubs for now -def discover_mac_tournament(c, tour_number, tab_number): - """Mac users need help.""" - return None - -def discover_mac(c): - """Poker client table window finder for Macintosh.""" - tables = {} - return tables - -def discover_mac_by_name(c, tablename): - """Oh, the humanity.""" - # again, i have no mac to test this on, sorry -eric - return None - -########################################################################### -# Main function used for testing -if __name__=="__main__": - c = Configuration.Config() - - print discover_table_by_name(c, "Torino") -# print discover_tournament_table(c, "118942908", "3") - - tables = discover(c) - for t in tables.keys(): - print tables[t] - - print _("press enter to continue") - sys.stdin.readline() From 7acc8e11356592c2f1e64575bf8a91ea6d629262 Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Fri, 27 Aug 2010 08:27:16 +0300 Subject: [PATCH 297/641] Update changelog for snapshot --- packaging/debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packaging/debian/changelog b/packaging/debian/changelog index 29aa5e79..c09713a3 100644 --- a/packaging/debian/changelog +++ b/packaging/debian/changelog @@ -1,3 +1,9 @@ +free-poker-tools (0.20.906-1) unstable; urgency=low + + * New snapshot + + -- Mika Bostrom Fri, 27 Aug 2010 08:26:05 +0300 + free-poker-tools (0.20.905-1) unstable; urgency=low * New snapshot From d44b9494fbde94eecee50d0a67310dbf5380aa49 Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Fri, 27 Aug 2010 09:11:50 +0300 Subject: [PATCH 298/641] py2exe script moved to packaging/windows --- packaging/debian/rules | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packaging/debian/rules b/packaging/debian/rules index 58b1136b..9f8d5238 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -26,8 +26,7 @@ install: build # Copy *.pyw manually in packaging tree cp pyfpdb/*.pyw debian/$(PACKAGE)/usr/lib/python2.6/site-packages/fpdb/ # Remove scripts that are only useful in win32 - rm debian/$(PACKAGE)/usr/lib/python2.6/site-packages/fpdb//windows_make_bats.py - rm debian/$(PACKAGE)/usr/lib/python2.6/site-packages/fpdb/py2exe_setup.py + rm debian/$(PACKAGE)/usr/lib/python2.6/site-packages/fpdb/windows_make_bats.py binary-indep: build install From de9c0d9ba6ce52524cbde3015a316e22dff5a3e7 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 27 Aug 2010 14:44:19 +0800 Subject: [PATCH 299/641] Stars: Minor refactor to readHandInfo Make the readHandInfo function throw an exception if either of the regexes used fails to match --- pyfpdb/PokerStarsToFpdb.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index 39347f73..4fbe9dfd 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -224,14 +224,15 @@ class PokerStars(HandHistoryConverter): def readHandInfo(self, hand): info = {} - m = self.re_HandInfo.search(hand.handText,re.DOTALL) - if m: - info.update(m.groupdict()) - else: - pass # throw an exception here, eh? - m = self.re_GameInfo.search(hand.handText) - if m: - info.update(m.groupdict()) + m = self.re_HandInfo.search(hand.handText,re.DOTALL) + m2 = self.re_GameInfo.search(hand.handText) + if m is None or m2 is None: + logging.info("Didn't match re_HandInfo") + logging.info(hand.handText) + raise FpdbParseError("No match in readHandInfo.") + + info.update(m.groupdict()) + info.update(m2.groupdict()) log.debug("readHandInfo: %s" % info) for key in info: From 004dd80fc2a9b1f4ff908c2b511ae9af3219a990 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Fri, 27 Aug 2010 10:53:33 -0400 Subject: [PATCH 300/641] PartyPokerToFpdb: Allow HUD to find STTs. --- pyfpdb/PartyPokerToFpdb.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyfpdb/PartyPokerToFpdb.py b/pyfpdb/PartyPokerToFpdb.py index 2dab4569..4b941d54 100755 --- a/pyfpdb/PartyPokerToFpdb.py +++ b/pyfpdb/PartyPokerToFpdb.py @@ -502,7 +502,10 @@ class PartyPoker(HandHistoryConverter): if type=="tour": TableName = table_name.split(" ") print 'party', 'getTableTitleRe', "%s.+Table\s#%s" % (TableName[0], table_number) - return "%s.+Table\s#%s" % (TableName[0], table_number) + if table_number is None: + return "#%s" % (TableName[0]) + else: + return "%s.+Table\s#%s" % (TableName[0], table_number) else: print 'party', 'getTableTitleRe', table_number return table_name From 3eb4f057bc445f93c64e217c3374cd4e844ff0af Mon Sep 17 00:00:00 2001 From: Worros Date: Sat, 28 Aug 2010 16:43:05 +0800 Subject: [PATCH 301/641] THP: Add 'support' for other sites --- pyfpdb/TestHandsPlayers.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index 5da4d672..ae521f71 100644 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -12,7 +12,8 @@ import fpdb_import class FpdbError: - def __init__(self): + def __init__(self, sitename): + self.site = sitename self.errorcount = 0 self.histogram = {} @@ -28,6 +29,7 @@ class FpdbError: self.errorcount += 1 def print_histogram(self): + print "%s:" % self.site for f in self.histogram: idx = f.find('regression') print "(%3d) : %s" %(self.histogram[f], f[idx:]) @@ -103,14 +105,25 @@ def main(argv=None): importer.setCallHud(False) importer.setFakeCacheHHC(True) - errors = FpdbError() + PokerStarsErrors = FpdbError('PokerStars') + FTPErrors = FpdbError('Full Tilt Poker') + PartyPokerErrors = FpdbError('Party Poker') + BetfairErrors = FpdbError('Betfair') - walk_testfiles("regression-test-files/cash/Stars/", compare, importer, errors) + walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors) + walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors) + walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors) + walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors) + + totalerrors = PokerStarsErrors.errorcount + FTPErrors.errorcount + PartyPokerErrors.errorcount + BetfairErrors.errorcount print "---------------------" - print "Total Errors: %d" % errors.errorcount + print "Total Errors: %d" % totalerrors print "---------------------" - errors.print_histogram() + PokerStarsErrors.print_histogram() + FTPErrors.print_histogram() + PartyPokerErrors.print_histogram() + BetfairErrors.print_histogram() if __name__ == '__main__': sys.exit(main()) From 42497bf27a2f41909277884fd0271b071c29ef07 Mon Sep 17 00:00:00 2001 From: Worros Date: Sat, 28 Aug 2010 17:20:50 +0800 Subject: [PATCH 302/641] THP: Fix parser name call chain Also comment out Party for the moment, as there is a hh file that crashes the parser --- pyfpdb/TestHandsPlayers.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index ae521f71..6e49c7ff 100644 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -34,14 +34,14 @@ class FpdbError: idx = f.find('regression') print "(%3d) : %s" %(self.histogram[f], f[idx:]) -def compare(leaf, importer, errors): +def compare(leaf, importer, errors, site): filename = leaf #print "DEBUG: fileanme: %s" % filename # Test if this is a hand history file if filename.endswith('.txt'): # test if there is a .hp version of the file - importer.addBulkImportImportFileOrDir(filename, site="PokerStars") + importer.addBulkImportImportFileOrDir(filename, site=site) (stored, dups, partial, errs, ttime) = importer.runImport() if os.path.isfile(filename + '.hp'): # Compare them @@ -76,15 +76,15 @@ def compare(leaf, importer, errors): -def walk_testfiles(dir, function, importer, errors): +def walk_testfiles(dir, function, importer, errors, site): """Walks a directory, and executes a callback on each file """ dir = os.path.abspath(dir) for file in [file for file in os.listdir(dir) if not file in [".",".."]]: nfile = os.path.join(dir,file) if os.path.isdir(nfile): - walk_testfiles(nfile, compare, importer, errors) + walk_testfiles(nfile, compare, importer, errors, site) else: - compare(nfile, importer, errors) + compare(nfile, importer, errors, site) def main(argv=None): if argv is None: @@ -110,10 +110,10 @@ def main(argv=None): PartyPokerErrors = FpdbError('Party Poker') BetfairErrors = FpdbError('Betfair') - walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors) - walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors) - walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors) - walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors) + walk_testfiles("regression-test-files/cash/Stars/", compare, importer, PokerStarsErrors, "PokerStars") + walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors, "Full Tilt Poker") + #walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") + walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors, "Betfair") totalerrors = PokerStarsErrors.errorcount + FTPErrors.errorcount + PartyPokerErrors.errorcount + BetfairErrors.errorcount From 861edf954e9ac90560fd300aedd238f552f9cecf Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Sat, 28 Aug 2010 12:58:17 +0200 Subject: [PATCH 303/641] l10n: updated Hungarian translation This includes 1. a fix for a missing %s in a translated string which makes HUD failing to start when Hungarian locale is active 2. another potential string formatting mistake 3. various minor fixes, mainly typos --- pyfpdb/locale/fpdb-hu_HU.po | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 11a0a35d..651006ea 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" "POT-Creation-Date: 2010-08-26 18:52+CEST\n" -"PO-Revision-Date: 2010-08-26 01:40+0200\n" +"PO-Revision-Date: 2010-08-28 12:32+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -156,7 +156,7 @@ msgstr "A %s konfigurációs fájl nem található. Alapértelmezések használa #: Configuration.py:690 msgid "Reading configuration file %s" -msgstr "%s konfigurációs fájl használata" +msgstr "%s konfigurációs fájl olvasása" #: Configuration.py:691 msgid "" @@ -164,11 +164,11 @@ msgid "" "Reading configuration file %s\n" msgstr "" "\n" -"%s konfigurációs fájl használata\n" +"%s konfigurációs fájl olvasása\n" #: Configuration.py:696 msgid "Error parsing %s. See error log file." -msgstr "Hiba a(z) %s olvasása közben. Nézz bele a naplófájlba." +msgstr "Hiba a(z) %s értelmezése közben. Nézz bele a hibanaplóba." #: Database.py:74 msgid "Not using sqlalchemy connection pool." @@ -232,11 +232,11 @@ msgstr "ERROR: a(z) %s lekérdezés eredményének nem a player_id az első oszl #: Database.py:907 msgid "getLastInsertId(): problem fetching insert_id? ret=%d" -msgstr "getLastInsertId(): probléma insert_id lekérdezése közben? ret=%d" +msgstr "getLastInsertId(): probléma az insert_id lekérdezése közben? ret=%d" #: Database.py:919 msgid "getLastInsertId(%s): problem fetching lastval? row=%d" -msgstr "getLastInsertId(%s): probléma lastval lekérdezése közben? sor=%d" +msgstr "getLastInsertId(%s): probléma a lastval lekérdezése közben? sor=%d" #: Database.py:926 msgid "getLastInsertId(): unknown backend: %d" @@ -398,7 +398,7 @@ msgstr "Hiba analyze közben:" #: Database.py:1563 msgid "Analyze took %.1f seconds" -msgstr "Analyze %1.f másodpercig tartott" +msgstr "Analyze %.1f másodpercig tartott" #: Database.py:1573 Database.py:1579 msgid "Error during vacuum:" @@ -854,8 +854,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " -"%s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" +"s másodperc alatt - %.0f/mp" #: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" @@ -1242,7 +1242,7 @@ msgstr "A naplófájl " #: HUD_main.pyw:90 msgid "HUD_main starting: using db name = %s" -msgstr "HUD_main indítás: " +msgstr "HUD_main indítás: %s adatbázis használata" #: HUD_main.pyw:95 msgid "Note: error output is being diverted to:\n" @@ -1306,15 +1306,15 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" -msgstr "HUD_main indítása\n" +msgstr "HUD_main indítás\n" #: HUD_run_me.py:51 TournamentTracker.py:317 msgid "Using db name = %s\n" @@ -1772,7 +1772,7 @@ msgstr "utcTime:" #: HandHistoryConverter.py:685 msgid "Unable to create output directory %s for HHC!" -msgstr "A %s kimeneti könyvtár nem hozható létre a feldolgozó számára'" +msgstr "A %s kimeneti könyvtár nem hozható létre a feldolgozó számára!" #: HandHistoryConverter.py:686 msgid "*** ERROR: UNABLE TO CREATE OUTPUT DIRECTORY" @@ -3136,8 +3136,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " -"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" +"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1078 msgid "Help" @@ -3265,7 +3265,7 @@ msgid "" "Error No.%s please send the hand causing this to fpdb-main@lists.sourceforge." "net so we can fix the problem." msgstr "" -"%s számú hiba. Kérlek küldd el az ezt okozo leosztást az fpdb-main@lists." +"%s számú hiba. Kérlek küldd el az ezt okozó leosztást az fpdb-main@lists." "sourceforge.net címre, hogy ki tudjuk javítani a hibát." #: fpdb_import.py:520 From ad3c6516cd435c08ffa6aa8f57520c49148891be Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Sat, 28 Aug 2010 09:25:41 -0400 Subject: [PATCH 304/641] PartyPokerToFpdb: Try again to fix STT HUD. --- pyfpdb/PartyPokerToFpdb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/PartyPokerToFpdb.py b/pyfpdb/PartyPokerToFpdb.py index 4b941d54..f61b5b7b 100755 --- a/pyfpdb/PartyPokerToFpdb.py +++ b/pyfpdb/PartyPokerToFpdb.py @@ -502,8 +502,8 @@ class PartyPoker(HandHistoryConverter): if type=="tour": TableName = table_name.split(" ") print 'party', 'getTableTitleRe', "%s.+Table\s#%s" % (TableName[0], table_number) - if table_number is None: - return "#%s" % (TableName[0]) + if len(TableName[1]) > 6: + return "#%s" % (table_number) else: return "%s.+Table\s#%s" % (TableName[0], table_number) else: From 01c7e37bae5256b7761bf7521ad2febc7ed6264d Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sat, 28 Aug 2010 18:11:35 +0100 Subject: [PATCH 305/641] implement Add button in Database dialog (sqlite only) --- pyfpdb/Configuration.py | 65 +++++- pyfpdb/GuiDatabase.py | 500 +++++++++++++++++++++++++++++----------- 2 files changed, 427 insertions(+), 138 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 1349581d..edc7fb9b 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -974,9 +974,12 @@ class Config: if db_pass is not None: db_node.setAttribute("db_pass", db_pass) if db_server is not None: db_node.setAttribute("db_server", db_server) if defaultb or self.db_selected == db_name: - db_node.setAttribute("default", True) + db_node.setAttribute("default", "True") + for dbn in self.doc.getElementsByTagName("database"): + if dbn.getAttribute('db_name') != db_name and dbn.hasAttribute("default"): + dbn.removeAttribute("default") elif db_node.hasAttribute("default"): - db_node.removeAttribute("default") + db_node.removeAttribute("default") if self.supported_databases.has_key(db_name): if db_desc is not None: self.supported_databases[db_name].dp_desc = db_desc if db_ip is not None: self.supported_databases[db_name].dp_ip = db_ip @@ -987,6 +990,64 @@ class Config: if defaultb: self.db_selected = db_name return + + def add_db_parameters(self, db_name = 'fpdb', db_ip = None, db_user = None, + db_pass = None, db_desc = None, db_server = None, + default = "False"): + default = default.lower() + defaultb = string_to_bool(default, False) + if db_name in self.supported_databases: + raise ValueError("Database names must be unique") + + db_node = self.get_db_node(db_name) + if db_node is None: + for db_node in self.doc.getElementsByTagName("supported_databases"): + # should only be one supported_databases element, use last one if there are several + suppdb_node = db_node + t_node = self.doc.createTextNode(" ") + suppdb_node.appendChild(t_node) + db_node = self.doc.createElement("database") + suppdb_node.appendChild(db_node) + t_node = self.doc.createTextNode("\r\n ") + suppdb_node.appendChild(t_node) + db_node.setAttribute("db_name", db_name) + if db_desc is not None: db_node.setAttribute("db_desc", db_desc) + if db_ip is not None: db_node.setAttribute("db_ip", db_ip) + if db_user is not None: db_node.setAttribute("db_user", db_user) + if db_pass is not None: db_node.setAttribute("db_pass", db_pass) + if db_server is not None: db_node.setAttribute("db_server", db_server) + if defaultb: + db_node.setAttribute("default", "True") + for dbn in self.doc.getElementsByTagName("database"): + if dbn.getAttribute('db_name') != db_name and dbn.hasAttribute("default"): + dbn.removeAttribute("default") + elif db_node.hasAttribute("default"): + db_node.removeAttribute("default") + else: + if db_desc is not None: db_node.setAttribute("db_desc", db_desc) + if db_ip is not None: db_node.setAttribute("db_ip", db_ip) + if db_user is not None: db_node.setAttribute("db_user", db_user) + if db_pass is not None: db_node.setAttribute("db_pass", db_pass) + if db_server is not None: db_node.setAttribute("db_server", db_server) + if defaultb or self.db_selected == db_name: + db_node.setAttribute("default", "True") + elif db_node.hasAttribute("default"): + db_node.removeAttribute("default") + + if self.supported_databases.has_key(db_name): + if db_desc is not None: self.supported_databases[db_name].dp_desc = db_desc + if db_ip is not None: self.supported_databases[db_name].dp_ip = db_ip + if db_user is not None: self.supported_databases[db_name].dp_user = db_user + if db_pass is not None: self.supported_databases[db_name].dp_pass = db_pass + if db_server is not None: self.supported_databases[db_name].dp_server = db_server + self.supported_databases[db_name].db_selected = defaultb + else: + db = Database(node=db_node) + self.supported_databases[db.db_name] = db + + if defaultb: + self.db_selected = db_name + return def get_backend(self, name): """Returns the number of the currently used backend""" diff --git a/pyfpdb/GuiDatabase.py b/pyfpdb/GuiDatabase.py index ceea6dfd..599f0a7e 100755 --- a/pyfpdb/GuiDatabase.py +++ b/pyfpdb/GuiDatabase.py @@ -19,6 +19,7 @@ import os import sys import traceback import Queue +import re import pygtk pygtk.require('2.0') @@ -32,6 +33,7 @@ log = logging.getLogger("maintdbs") import Exceptions +import Configuration import Database import SQL @@ -112,24 +114,11 @@ class GuiDatabase: self.scrolledwindow.add(self.listview) h.pack_start(self.scrolledwindow, expand=True, fill=True, padding=0) - # to change label on buttons: - # ( see http://faq.pygtk.org/index.py?req=show&file=faq09.005.htp ) - gtk.stock_add([(gtk.STOCK_ADD, _("Add"), 0, 0, "")]) - - # alternatively: - # button = gtk.Button(stock=gtk.STOCK_CANCEL) - # button.show() - # alignment = button.get_children()[0] - # hbox = alignment.get_children()[0] - # image, label = hbox.get_children() - # label.set_text('Hide') - - - add_button = self.makeSideButton(_("Add"), gtk.STOCK_ADD) + add_button = SideButton(_("_Add"), gtk.STOCK_ADD) add_button.connect("clicked", self.addDB, None) vbtn.pack_start(add_button, False, False, 3) - refresh_button = self.makeSideButton(_("Refresh"), gtk.STOCK_REFRESH) + refresh_button = SideButton(_("_Refresh"), gtk.STOCK_REFRESH) refresh_button.connect("clicked", self.refresh, None) vbtn.pack_start(refresh_button, False, False, 3) @@ -139,7 +128,7 @@ class GuiDatabase: col = self.addTextColumn(_("Username"), 3, True) col = self.addTextColumn(_("Password"), 4, True) col = self.addTextColumn(_("Host"), 5, True) - col = self.addTextObjColumn(_("Default"), 6, 6) + col = self.addTextObjColumn(_("Open"), 6, 6) col = self.addTextObjColumn(_("Status"), 7, 8) #self.listview.get_selection().set_mode(gtk.SELECTION_SINGLE) @@ -155,25 +144,6 @@ class GuiDatabase: err = traceback.extract_tb(sys.exc_info()[2])[-1] print 'guidbmaint: '+ err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) - def makeSideButton(self, label, stock): - gtk.stock_add([(gtk.STOCK_REFRESH, _("Refresh"), 0, 0, "")]) - - button = gtk.Button(stock=stock) - alignment = button.get_children()[0] - hbox = alignment.get_children()[0] - image, label = hbox.get_children() - #label.set_text('Hide') - hbox.remove(image) - hbox.remove(label) - v = gtk.VBox(False, spacing=3) - v.pack_start(image, 3) - v.pack_start(label, 3) - alignment.remove(hbox) - alignment.add(v) - button.show_all() - - return(button) - def dialog_response_cb(self, dialog, response_id): # this is called whether close button is pressed or window is closed log.info('dialog_response_cb: response_id='+str(response_id)) @@ -293,7 +263,7 @@ class GuiDatabase: self.liststore.clear() #self.listcols = [] - dia = self.info_box2(None, _('Testing database connections ... '), "", False, False) + dia = InfoBox( parent=self.dia, str1=_('Testing database connections ... ') ) while gtk.events_pending(): gtk.main_iteration() @@ -313,57 +283,14 @@ class GuiDatabase: default = (name == self.config.db_selected) default_icon = None if default: default_icon = gtk.STOCK_APPLY - status = "" - icon = None - err_msg = "" - sql = SQL.Sql(db_server=dbms) - db = Database.Database(self.config, sql = sql, autoconnect = False) - # try to connect to db, set status and err_msg if it fails - try: - # is creating empty db for sqlite ... mod db.py further? - # add noDbTables flag to db.py? - log.debug(_("loaddbs: trying to connect to: %s/%s, %s, %s/%s") % (str(dbms_num),dbms,name,user,passwd)) - db.connect(backend=dbms_num, host=host, database=name, user=user, password=passwd, create=False) - if db.connected: - log.debug(_(" connected ok")) - status = 'ok' - icon = gtk.STOCK_APPLY - if db.wrongDbVersion: - status = 'old' - icon = gtk.STOCK_INFO - else: - log.debug(_(" not connected but no exception")) - except Exceptions.FpdbMySQLAccessDenied: - err_msg = _("MySQL Server reports: Access denied. Are your permissions set correctly?") - status = "failed" - icon = gtk.STOCK_CANCEL - except Exceptions.FpdbMySQLNoDatabase: - err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started") - status = "failed" - icon = gtk.STOCK_CANCEL - except Exceptions.FpdbPostgresqlAccessDenied: - err_msg = _("Postgres Server reports: Access denied. Are your permissions set correctly?") - status = "failed" - except Exceptions.FpdbPostgresqlNoDatabase: - err_msg = _("Postgres client reports: Unable to connect - Please check that the Postgres service has been started") - status = "failed" - icon = gtk.STOCK_CANCEL - except: - err = traceback.extract_tb(sys.exc_info()[2])[-1] - log.info( 'db connection to '+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' - + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) )#TODO Gettextify - status = "failed" - icon = gtk.STOCK_CANCEL - if err_msg: - log.info( 'db connection to '+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' - + err_msg )#TODO Gettextify + status, err_msg, icon = GuiDatabase.testDB(self.config, dbms, dbms_num, name, user, passwd, host) b = gtk.Button(name) b.show() iter = self.liststore.append( (dbms, name, comment, user, passwd, host, "", default_icon, status, icon) ) - self.info_box2(dia[0], _("finished."), "", False, True) + dia.add_msg( _("finished."), False, True ) self.listview.show() self.scrolledwindow.show() self.vbox.show() @@ -402,66 +329,367 @@ class GuiDatabase: self.loadDbs() def addDB(self, widget, data): - pass + adb = AddDB(self.config, self.dia) + (status, err_msg, icon, dbms, dbms_num, name, comment, user, passwd, host) = adb.run() + adb.destroy() - def info_box(self, dia, str1, str2, run, destroy): - if dia is None: - #if run: - btns = gtk.BUTTONS_NONE - btns = gtk.BUTTONS_OK - dia = gtk.MessageDialog( parent=self.main_window, flags=gtk.DIALOG_DESTROY_WITH_PARENT - , type=gtk.MESSAGE_INFO, buttons=(btns), message_format=str1 ) - # try to remove buttons! - # (main message is in inverse video if no buttons, so try removing them after - # creating dialog) - # NO! message just goes back to inverse video :-( use info_box2 instead - for c in dia.vbox.get_children(): - if isinstance(c, gtk.HButtonBox): - for d in c.get_children(): - log.info('child: '+str(d)+' is a '+str(d.__class__)) - if isinstance(d, gtk.Button): - log.info(_('removing button %s'% str(d))) - c.remove(d) - if str2: - dia.format_secondary_text(str2) - else: - dia.set_markup(str1) - if str2: - dia.format_secondary_text(str2) - dia.show() - response = None - if run: response = dia.run() - if destroy: dia.destroy() - return (dia, response) + # save in liststore + if status == 'ok': + iter = self.liststore.append( (dbms, name, comment, user, passwd, host, "", None, status, icon) ) - def info_box2(self, dia, str1, str2, run, destroy): - if dia is None: - # create dialog and add icon and label - btns = (gtk.BUTTONS_OK) - btns = None - # messagedialog puts text in inverse colors if no buttons are displayed?? - #dia = gtk.MessageDialog( parent=self.main_window, flags=gtk.DIALOG_DESTROY_WITH_PARENT - # , type=gtk.MESSAGE_INFO, buttons=(btns), message_format=str1 ) - dia = gtk.Dialog( parent=self.dia, flags=gtk.DIALOG_DESTROY_WITH_PARENT - , title="" ) # , buttons=btns - vbox = dia.vbox + # keep config save code in line with edited_cb()? call common routine? + + valid = True + # Validate new value (only for dbms so far, but dbms now not updateable so no validation at all!) + #if col == self.COL_DBMS: + # if new_text not in Configuration.DATABASE_TYPES: + # valid = False + + if valid: + self.config.add_db_parameters( db_server = dbms + , db_name = name + , db_desc = comment + , db_ip = host + , db_user = user + , db_pass = passwd ) + self.config.save() + self.changes = False + + + @staticmethod + def testDB(config, dbms, dbms_num, name, user, passwd, host): + status = "" + icon = None + err_msg = "" + + sql = SQL.Sql(db_server=dbms) + db = Database.Database(config, sql = sql, autoconnect = False) + # try to connect to db, set status and err_msg if it fails + try: + # is creating empty db for sqlite ... mod db.py further? + # add noDbTables flag to db.py? + log.debug(_("loaddbs: trying to connect to: %s/%s, %s, %s/%s") % (str(dbms_num),dbms,name,user,passwd)) + db.connect(backend=dbms_num, host=host, database=name, user=user, password=passwd, create=False) + if db.connected: + log.debug(_(" connected ok")) + status = 'ok' + icon = gtk.STOCK_APPLY + if db.wrongDbVersion: + status = 'old' + icon = gtk.STOCK_INFO + else: + log.debug(_(" not connected but no exception")) + except Exceptions.FpdbMySQLAccessDenied: + err_msg = _("MySQL Server reports: Access denied. Are your permissions set correctly?") + status = "failed" + icon = gtk.STOCK_CANCEL + except Exceptions.FpdbMySQLNoDatabase: + err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started") + status = "failed" + icon = gtk.STOCK_CANCEL + except Exceptions.FpdbPostgresqlAccessDenied: + err_msg = _("Postgres Server reports: Access denied. Are your permissions set correctly?") + status = "failed" + except Exceptions.FpdbPostgresqlNoDatabase: + err_msg = _("Postgres client reports: Unable to connect - Please check that the Postgres service has been started") + status = "failed" + icon = gtk.STOCK_CANCEL + except: + # add more specific exceptions here if found (e.g. for sqlite?) + err = traceback.extract_tb(sys.exc_info()[2])[-1] + err_msg = err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) + status = "failed" + icon = gtk.STOCK_CANCEL + if err_msg: + log.info( _('db connection to ') + str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' + + err_msg ) + + return( status, err_msg, icon ) + + +class AddDB(gtk.Dialog): + + def __init__(self, config, parent): + log.debug("AddDB starting") + self.dbnames = { 'Sqlite' : Configuration.DATABASE_TYPE_SQLITE + , 'MySQL' : Configuration.DATABASE_TYPE_MYSQL + , 'PostgreSQL' : Configuration.DATABASE_TYPE_POSTGRESQL + } + self.config = config + # create dialog and add icon and label + super(AddDB,self).__init__( parent=parent + , flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT + , title="Add New Database" + , buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT + ,gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT) + ) # , buttons=btns + self.set_default_size(450, 280) + #self.connect('response', self.response_cb) + + t = gtk.Table(5, 3, True) + self.vbox.pack_start(t, expand=False, fill=False, padding=3) + + l = gtk.Label( _("DB Type") ) + l.set_alignment(1.0, 0.5) + t.attach(l, 0, 1, 0, 1, xpadding=3) + self.cb_dbms = gtk.combo_box_new_text() + for s in ('Sqlite',): # keys(self.dbnames): + self.cb_dbms.append_text(s) + self.cb_dbms.set_active(0) + t.attach(self.cb_dbms, 1, 3, 0, 1, xpadding=3) + self.cb_dbms.connect("changed", self.db_type_changed, None) + + l = gtk.Label( _("DB Name") ) + l.set_alignment(1.0, 0.5) + t.attach(l, 0, 1, 1, 2, xpadding=3) + self.e_db_name = gtk.Entry() + self.e_db_name.set_width_chars(15) + t.attach(self.e_db_name, 1, 3, 1, 2, xpadding=3) + self.e_db_name.connect("focus-out-event", self.db_name_changed, None) + + l = gtk.Label( _("DB Description") ) + l.set_alignment(1.0, 0.5) + t.attach(l, 0, 1, 2, 3, xpadding=3) + self.e_db_desc = gtk.Entry() + self.e_db_desc.set_width_chars(15) + t.attach(self.e_db_desc, 1, 3, 2, 3, xpadding=3) + + self.l_username = gtk.Label( _("Username") ) + self.l_username.set_alignment(1.0, 0.5) + t.attach(self.l_username, 0, 1, 3, 4, xpadding=3) + self.e_username = gtk.Entry() + self.e_username.set_width_chars(15) + t.attach(self.e_username, 1, 3, 3, 4, xpadding=3) + + self.l_password = gtk.Label( _("Password") ) + self.l_password.set_alignment(1.0, 0.5) + t.attach(self.l_password, 0, 1, 4, 5, xpadding=3) + self.e_password = gtk.Entry() + self.e_password.set_width_chars(15) + t.attach(self.e_password, 1, 3, 4, 5, xpadding=3) + + self.l_host = gtk.Label( _("Host Computer") ) + self.l_host.set_alignment(1.0, 0.5) + t.attach(self.l_host, 0, 1, 5, 6, xpadding=3) + self.e_host = gtk.Entry() + self.e_host.set_width_chars(15) + self.e_host.set_text("localhost") + t.attach(self.e_host, 1, 3, 5, 6, xpadding=3) + + parent.show_all() + self.show_all() + + # hide username/password fields as not used by sqlite + self.l_username.hide() + self.e_username.hide() + self.l_password.hide() + self.e_password.hide() + + def run(self): + response = super(AddDB,self).run() + log.debug("adddb.run: response is "+str(response)+" accept is "+str(int(gtk.RESPONSE_ACCEPT))) + + ok,retry = False,True + while response == gtk.RESPONSE_ACCEPT: + ok,retry = self.check_fields() + if retry: + response = super(AddDB,self).run() + else: + response = gtk.RESPONSE_REJECT + + (status, err_msg, icon, dbms, dbms_num + ,name, db_desc, user, passwd, host) = ("error", "error", None, None, None + ,None, None, None, None, None) + if ok: + log.debug("start creating new db") + # add a new db + master_password = None + dbms = self.dbnames[ self.cb_dbms.get_active_text() ] + dbms_num = self.config.get_backend(dbms) + name = self.e_db_name.get_text() + db_desc = self.e_db_desc.get_text() + user = self.e_username.get_text() + passwd = self.e_password.get_text() + host = self.e_host.get_text() - h = gtk.HBox(False, 2) - i = gtk.Image() - i.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG) - l = gtk.Label(str1) - h.pack_start(i, padding=5) - h.pack_start(l, padding=5) - vbox.pack_start(h) + # TODO: + # if self.cb_dbms.get_active_text() == 'Postgres': + # + + # create_db() in Database.py or here? ... TODO + + # test db after creating? + status, err_msg, icon = GuiDatabase.testDB(self.config, dbms, dbms_num, name, user, passwd, host) + log.debug('tested new db, result='+str((status,err_msg))) + if status == 'ok': + #dia = InfoBox( parent=self, str1=_('Database created') ) + str1 = _('Database created') + else: + #dia = InfoBox( parent=self, str1=_('Database creation failed') ) + str1 = _('Database creation failed') + #dia.add_msg("", True, True) + btns = (gtk.BUTTONS_OK) + dia = gtk.MessageDialog( parent=self, flags=gtk.DIALOG_DESTROY_WITH_PARENT + , type=gtk.MESSAGE_INFO, buttons=(btns), message_format=str1 ) + dia.run() + + return( (status, err_msg, icon, dbms, dbms_num, name, db_desc, user, passwd, host) ) + + def check_fields(self): + """check fields and return true/false according to whether user wants to try again + return False if fields are ok + """ + log.debug("check_fields: starting") + try_again = False + ok = True + + # checks for all db's + if self.e_db_name.get_text() == "": + msg = _("No Database Name given") + ok = False + elif self.e_db_desc.get_text() is None or self.e_db_desc.get_text() == "": + msg = _("No Database Description given") + ok = False + elif self.cb_dbms.get_active_text() != 'Sqlite' and self.e_username.get_text() == "": + msg = _("No Username given") + ok = False + elif self.cb_dbms.get_active_text() != 'Sqlite' and self.e_password.get_text() == "": + msg = _("No Password given") + ok = False + elif self.e_host.get_text() == "": + msg = _("No Host given") + ok = False + + if ok: + if self.cb_dbms.get_active_text() == 'Sqlite': + # checks for sqlite + pass + elif self.cb_dbms.get_active_text() == 'MySQL': + # checks for mysql + pass + elif self.cb_dbms.get_active_text() == 'Postgres': + # checks for postgres + pass + else: + msg = "Unknown Database Type selected" + ok = False + + if not ok: + log.debug("check_fields: open dialog") + dia = gtk.MessageDialog( parent=self + , flags=gtk.DIALOG_DESTROY_WITH_PARENT + , type=gtk.MESSAGE_ERROR + , message_format=msg + , buttons = gtk.BUTTONS_YES_NO + ) + #l = gtk.Label(msg) + #dia.vbox.add(l) + l = gtk.Label( _("Do you want to try again?") ) + dia.vbox.add(l) + dia.show_all() + ret = dia.run() + log.debug("check_fields: ret is "+str(ret)+" cancel is "+str(int(gtk.RESPONSE_CANCEL))) + if ret == gtk.RESPONSE_YES: + try_again = True + log.debug("check_fields: destroy dialog") + dia.hide() + dia.destroy() + + log.debug("check_fields: returning ok as "+str(ok)+", try_again as "+str(try_again)) + return(ok,try_again) + + def db_type_changed(self, widget, data): + if self.cb_dbms.get_active_text() == 'Sqlite': + self.l_username.hide() + self.e_username.hide() + self.e_username.set_text("") + self.l_password.hide() + self.e_password.hide() + self.e_password.set_text("") else: - # add extra label - vbox = dia.vbox - vbox.pack_start( gtk.Label(str1) ) - dia.show_all() + self.l_username.show() + self.e_username.show() + self.l_password.show() + self.e_password.show() + return(response) + + def db_name_changed(self, widget, event, data): + log.debug('db_name_changed: text='+widget.get_text()) + if not re.match('\....$', widget.get_text()): + widget.set_text(widget.get_text()+'.db3') + widget.show() + + #def response_cb(self, dialog, data): + # dialog.destroy() + # return(data) + + +class InfoBox(gtk.Dialog): + + def __init__(self, parent, str1): + # create dialog and add icon and label + btns = (gtk.BUTTONS_OK) + btns = None + # messagedialog puts text in inverse colors if no buttons are displayed?? + #dia = gtk.MessageDialog( parent=self.main_window, flags=gtk.DIALOG_DESTROY_WITH_PARENT + # , type=gtk.MESSAGE_INFO, buttons=(btns), message_format=str1 ) + # so just use Dialog instead + super(InfoBox,self).__init__( parent=parent + , flags=gtk.DIALOG_DESTROY_WITH_PARENT + , title="" ) # , buttons=btns + + h = gtk.HBox(False, 2) + i = gtk.Image() + i.set_from_stock(gtk.STOCK_DIALOG_INFO, gtk.ICON_SIZE_DIALOG) + l = gtk.Label(str1) + h.pack_start(i, padding=5) + h.pack_start(l, padding=5) + self.vbox.pack_start(h) + parent.show_all() + self.show_all() + + def add_msg(self, str1, run, destroy): + # add extra label + self.vbox.pack_start( gtk.Label(str1) ) + self.show_all() response = None - if run: response = dia.run() - if destroy: dia.destroy() - return (dia, response) + if run: response = self.run() + if destroy: self.destroy() + return (response) + + +class SideButton(gtk.Button): + """Create a button with the label below the icon""" + + # to change label on buttons: + # ( see http://faq.pygtk.org/index.py?req=show&file=faq09.005.htp ) + # gtk.stock_add([(gtk.STOCK_ADD, _("Add"), 0, 0, "")]) + + # alternatively: + # button = gtk.Button(stock=gtk.STOCK_CANCEL) + # button.show() + # alignment = button.get_children()[0] + # hbox = alignment.get_children()[0] + # image, label = hbox.get_children() + # label.set_text('Hide') + + def __init__(self, label=None, stock=None, use_underline=True): + gtk.stock_add([(stock, label, 0, 0, "")]) + + super(SideButton, self).__init__(label=label, stock=stock, use_underline=True) + alignment = self.get_children()[0] + hbox = alignment.get_children()[0] + image, label = hbox.get_children() + #label.set_text('Hide') + hbox.remove(image) + hbox.remove(label) + v = gtk.VBox(False, spacing=3) + v.pack_start(image, 3) + v.pack_start(label, 3) + alignment.remove(hbox) + alignment.add(v) + self.show_all() + if __name__=="__main__": From ff2a9fcc5a5c1cefab10b75457da4d427919af92 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sat, 28 Aug 2010 22:49:59 +0200 Subject: [PATCH 306/641] move gettext import to the right place in GuiGraphViewer --- pyfpdb/GuiGraphViewer.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pyfpdb/GuiGraphViewer.py b/pyfpdb/GuiGraphViewer.py index fe82aa44..09acb483 100644 --- a/pyfpdb/GuiGraphViewer.py +++ b/pyfpdb/GuiGraphViewer.py @@ -26,22 +26,6 @@ from time import * from datetime import datetime #import pokereval -try: - import matplotlib - matplotlib.use('GTKCairo') - from matplotlib.figure import Figure - from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas - from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar - from matplotlib.font_manager import FontProperties - from numpy import arange, cumsum - from pylab import * -except ImportError, inst: - print _("""Failed to load libs for graphing, graphing will not function. Please - install numpy and matplotlib if you want to use graphs.""") - print _("""This is of no consequence for other parts of the program, e.g. import - and HUD are NOT affected by this problem.""") - print "ImportError: %s" % inst.args - import locale lang=locale.getdefaultlocale()[0][0:2] if lang=="en": @@ -59,6 +43,22 @@ import Database import Filters import Charset +try: + import matplotlib + matplotlib.use('GTKCairo') + from matplotlib.figure import Figure + from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas + from matplotlib.backends.backend_gtkagg import NavigationToolbar2GTKAgg as NavigationToolbar + from matplotlib.font_manager import FontProperties + from numpy import arange, cumsum + from pylab import * +except ImportError, inst: + print _("""Failed to load libs for graphing, graphing will not function. Please + install numpy and matplotlib if you want to use graphs.""") + print _("""This is of no consequence for other parts of the program, e.g. import + and HUD are NOT affected by this problem.""") + print "ImportError: %s" % inst.args + class GuiGraphViewer (threading.Thread): def __init__(self, querylist, config, parent, debug=True): From 593006318af0c6f9532128cf46db73e373f49fc3 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sat, 28 Aug 2010 23:49:37 +0100 Subject: [PATCH 307/641] more refinements to OnGame parser --- pyfpdb/OnGameToFpdb.py | 96 +++++++++++++++++++++++++++++------------- 1 file changed, 67 insertions(+), 29 deletions(-) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index 088920d3..b7344ed6 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -19,6 +19,13 @@ ######################################################################## import sys +import exceptions + +import logging +# logging has been set up in fpdb.py or HUD_main.py, use their settings: +log = logging.getLogger("parser") + + import Configuration from HandHistoryConverter import * from decimal import Decimal @@ -65,7 +72,6 @@ class OnGame(HandHistoryConverter): # '5 Card Draw' : ('draw','fivedraw') } - #self.rexx.setGameInfoRegex('.*Blinds \$?(?P[.0-9]+)/\$?(?P[.0-9]+)') # Static regexes # ***** End of hand R5-75443872-57 ***** re_SplitHands = re.compile(u'\*\*\*\*\*\sEnd\sof\shand\s[-A-Z\d]+.*\n(?=\*)') @@ -73,6 +79,18 @@ class OnGame(HandHistoryConverter): # ***** History for hand R5-75443872-57 ***** # Start hand: Wed Aug 18 19:29:10 GMT+0100 2010 # Table: someplace [75443872] (LIMIT TEXAS_HOLDEM 0.50/1, Real money) +#***** History for hand R5-78042004-262 ***** +#Start hand: Fri Aug 27 21:40:46 GMT+0100 2010 +#Table: Bamako [78042004] (LIMIT TEXAS_HOLDEM $0.25/$0.50, Real money) +#User: sagi34 +#{ u'BB': None +#, u'DATETIME': u'Fri Aug 27 22:38:26 GMT+0100 2010\\n' +#, u'GAME': None +#, u'HID': u'R5-78042004-346' +#, u'TABLE': u'Bamako' +#, u'LIMIT': None +#, u'SB': None +#} re_HandInfo = re.compile(u""" \*\*\*\*\*\sHistory\sfor\shand\s(?P[-A-Z\d]+).* Start\shand:\s(?P.*) @@ -80,8 +98,8 @@ class OnGame(HandHistoryConverter): ( (?PNo\sLimit|Limit|LIMIT|Pot\sLimit)\s (?PTEXAS_HOLDEM|RAZZ)\s - (?P[.0-9]+)/ - (?P[.0-9]+) + (%(LS)s)?(?P[.0-9]+)/ + (%(LS)s)?(?P[.0-9]+) )? """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) @@ -102,7 +120,9 @@ class OnGame(HandHistoryConverter): # self.rexx.button_re = re.compile('#SUMMARY\nDealer: (?P.*)\n') #Seat 1: .Lucchess ($4.17 in chips) - re_PlayerInfo = re.compile(u'Seat (?P[0-9]+): (?P.*) \((?P[.0-9]+)\)') + #Seat 1: phantomaas ($27.11) + #Seat 5: mleo17 ($9.37) + re_PlayerInfo = re.compile(u'Seat (?P[0-9]+):\s(?P.*)\s\((%(LS)s)?(?P[.0-9]+)\)' % substitutions) def compilePlayerRegexs(self, hand): players = set([player[1] for player in hand.players]) @@ -117,15 +137,16 @@ class OnGame(HandHistoryConverter): #helander2222 posts blind ($0.25), lopllopl posts blind ($0.50). player_re = "(?P" + "|".join(map(re.escape, players)) + ")" subst = {'PLYR': player_re, 'CUR': self.sym[hand.gametype['currency']]} - self.re_PostSB = re.compile('(?P.*) posts small blind \(\$?(?P[.0-9]+)\)') - self.re_PostBB = re.compile('\), (?P.*) posts big blind \(\$?(?P[.0-9]+)\)') - self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for %(CUR)s(?P[.0-9]+)" % subst, re.MULTILINE) - self.re_PostBoth = re.compile('.*\n(?P.*): posts small \& big blinds \(\$? (?P[.0-9]+)\)') + self.re_PostSB = re.compile('(?P.*) posts small blind \((%(CUR)s)?(?P[\.0-9]+)\)' % subst, re.MULTILINE) + self.re_PostBB = re.compile('\), (?P.*) posts big blind \((%(CUR)s)?(?P[\.0-9]+)\)' % subst, re.MULTILINE) + self.re_Antes = re.compile(r"^%(PLYR)s: posts the ante (%(CUR)s)?(?P[\.0-9]+)" % subst, re.MULTILINE) + self.re_BringIn = re.compile(r"^%(PLYR)s: brings[- ]in( low|) for (%(CUR)s)?(?P[\.0-9]+)" % subst, re.MULTILINE) + self.re_PostBoth = re.compile('.*\n(?P.*): posts small \& big blinds \( (%(CUR)s)?(?P[\.0-9]+)\)' % subst) self.re_HeroCards = re.compile('.*\nDealt\sto\s(?P.*)\s\[ (?P.*) \]') #lopllopl checks, Eurolll checks, .Lucchess checks. - self.re_Action = re.compile('(, )?(?P.*?)(?P bets| checks| raises| calls| folds)( (?P\d*\.?\d*))?( and is all-in)?') + #chumley. calls $0.25 + self.re_Action = re.compile('(, )?(?P.*?)(?P bets| checks| raises| calls| folds)( (%(CUR)s)?(?P[\d\.]+))?( and is all-in)?' % subst) #self.re_Board = re.compile(r"\[board cards (?P.+) \]") #Uchilka shows [ KC,JD ] @@ -133,7 +154,14 @@ class OnGame(HandHistoryConverter): # TODO: read SUMMARY correctly for collected pot stuff. #Uchilka, bets $11.75, collects $23.04, net $11.29 - self.re_CollectPot = re.compile('(?P.*), bets.+, collects \$(?P\d*\.?\d*), net.* ') + #like this: + #Main pot: $3.57 won by mleo17 ($3.40) + #Side pot 1: $3.26 won by maac_5 ($3.10) + #Main pot: $2.87 won by maac_5 ($1.37), sagi34 ($1.36) + self.re_Pot = re.compile('(Main|Side)\spot(\s\d+)?:\s.*won\sby\s(?P.*$)', re.MULTILINE) + self.re_CollectPot = re.compile('\s*(?P.*)\s\((%(CUR)s)?(?P[\.\d]+)\)' % subst) + #Seat 5: mleo17 ($3.40), net: +$2.57, [Jd, Qd] (TWO_PAIR QUEEN, JACK) + self.re_ShownCards = re.compile("^Seat (?P[0-9]+): (?P.*) \(.*\), net:.* \[(?P.*)\].*" % subst, re.MULTILINE) self.re_sitsOut = re.compile('(?P.*) sits out') def readSupportedGames(self): @@ -160,7 +188,13 @@ class OnGame(HandHistoryConverter): info['currency'] = 'USD' if 'LIMIT' in mg: - info['limitType'] = self.limits[mg['LIMIT']] + if mg['LIMIT'] in self.limits: + info['limitType'] = self.limits[mg['LIMIT']] + else: + tmp = handText[0:100] + log.error(_("determineGameType: limit not found in self.limits(%s). hand: '%s'") % (str(mg),tmp)) + log.error(_("determineGameType: Raising FpdbParseError")) + raise FpdbParseError(_("limit not found in self.limits(%s). hand: '%s'") % (str(mg),tmp)) if 'GAME' in mg: (info['base'], info['category']) = self.games[mg['GAME']] if 'SB' in mg: @@ -168,6 +202,7 @@ class OnGame(HandHistoryConverter): if 'BB' in mg: info['bb'] = mg['BB'] + #log.debug("determinegametype: returning "+str(info)) return info def readHandInfo(self, hand): @@ -177,7 +212,7 @@ class OnGame(HandHistoryConverter): if m: info.update(m.groupdict()) - log.debug("readHandInfo: %s" % info) + #log.debug("readHandInfo: %s" % info) for key in info: if key == 'DATETIME': #'Wed Aug 18 19:45:30 GMT+0100 2010 @@ -203,6 +238,7 @@ class OnGame(HandHistoryConverter): hand.mixed = None def readPlayerStacks(self, hand): + #log.debug("readplayerstacks: re is '%s'" % self.re_PlayerInfo) m = self.re_PlayerInfo.finditer(hand.handText) for a in m: hand.addPlayer(int(a.group('SEAT')), a.group('PNAME'), a.group('CASH')) @@ -247,15 +283,13 @@ class OnGame(HandHistoryConverter): hand.setCommunityCards(street, m.group('CARDS').split(', ')) def readBlinds(self, hand): - log.debug( _("readBlinds starting") ) + #log.debug( _("readBlinds starting, hand=") + "\n["+hand.handText+"]" ) try: m = self.re_PostSB.search(hand.handText) - if m is None: - log.debug( _("re_postSB failed, hand=") + hand.handText ) hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB')) - except: # no small blind - log.debug( _("readBlinds in noSB exception")+str(sys.exc_info()) ) - hand.addBlind(None, None, None) + except exceptions.AttributeError: # no small blind + log.debug( _("readBlinds in noSB exception - no SB created")+str(sys.exc_info()) ) + #hand.addBlind(None, None, None) 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): @@ -309,7 +343,7 @@ class OnGame(HandHistoryConverter): m = self.re_Action.finditer(hand.streets[street]) for action in m: acts = action.groupdict() - #print "DEBUG: acts: %s" %acts + #log.debug("readaction: acts: %s" %acts) if action.group('ATYPE') == ' raises': hand.addRaiseBy( street, action.group('PNAME'), action.group('BET') ) elif action.group('ATYPE') == ' calls': @@ -334,18 +368,22 @@ class OnGame(HandHistoryConverter): hand.addShownCards(cards, shows.group('PNAME')) def readCollectPot(self,hand): - for m in self.re_CollectPot.finditer(hand.handText): - hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT')) + for m in self.re_Pot.finditer(hand.handText): + for splitpot in m.group('POT').split(','): + for m in self.re_CollectPot.finditer(splitpot): + hand.addCollectPot(player=m.group('PNAME'),pot=m.group('POT')) def readShownCards(self,hand): - return - #for m in self.rexx.collect_pot_re.finditer(hand.string): - #if m.group('CARDS') is not None: - #cards = m.group('CARDS') - #cards = set(cards.split(',')) - #hand.addShownCards(cards=None, player=m.group('PNAME'), holeandboard=cards) + for m in self.re_ShownCards.finditer(hand.handText): + 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('CARDS') is not None: + shown = True + hand.addShownCards(cards=cards, player=m.group('PNAME'), shown=shown, mucked=mucked) + - if __name__ == "__main__": From 6e3953e7744523fd5e4302f242f596715539d05d Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sat, 28 Aug 2010 23:57:04 +0100 Subject: [PATCH 308/641] add hand ID to warning message --- pyfpdb/Hand.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index c32f9f37..377c7ed6 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -62,6 +62,7 @@ class Hand(object): def __init__(self, config, sitename, gametype, handText, builtFrom = "HHC"): + #log.debug( _("Hand.init(): handText is ") + str(handText) ) self.config = config #log = Configuration.get_logger("logging.conf", "db", log_dir=self.config.dir_log) self.sitename = sitename @@ -314,7 +315,7 @@ If a player has None chips he won't be added.""" log.debug("markStreets:\n"+ str(self.streets)) else: tmp = self.handText[0:100] - log.error(_("markstreets didn't match - Assuming hand cancelled")) + log.error(_("markstreets didn't match - Assuming hand %s was cancelled") % self.handid) self.cancelled = True raise FpdbParseError(_("FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'") % tmp) From 8f91adc513af425ff61f1af009da3d7358b900af Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sun, 29 Aug 2010 12:39:54 +0100 Subject: [PATCH 309/641] add log definition --- pyfpdb/DerivedStats.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index dde8ecca..d79d49bf 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -19,6 +19,10 @@ import Card from decimal import Decimal +import logging +# logging has been set up in fpdb.py or HUD_main.py, use their settings: +log = logging.getLogger("parser") + DEBUG = False if DEBUG: From bf8b826bbcfbb3c9835b4d6933f442fe8c7e235b Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sun, 29 Aug 2010 12:46:22 +0100 Subject: [PATCH 310/641] copy any missing parts of config from .example --- pyfpdb/Configuration.py | 137 ++++++++++++++++++++++++++-------------- 1 file changed, 91 insertions(+), 46 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index a578bcc9..e9f1521c 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -82,6 +82,11 @@ def get_exec_path(): def get_config(file_name, fallback = True): """Looks in cwd and in self.default_config_path for a config file.""" + + # look for example file even if not used here, path is returned to caller + config_found,example_found,example_copy = False,False,False + config_path, example_path = None,None + exec_dir = get_exec_path() if file_name == 'logging.conf' and not hasattr(sys, "frozen"): config_path = os.path.join(exec_dir, 'pyfpdb', file_name) @@ -89,17 +94,13 @@ def get_config(file_name, fallback = True): config_path = os.path.join(exec_dir, file_name) # print "config_path=", config_path if os.path.exists(config_path): # there is a file in the cwd - return (config_path,False) # so we use it + config_found = True # so we use it else: # no file in the cwd, look where it should be in the first place default_dir = get_default_config_path() config_path = os.path.join(default_dir, file_name) # print "config path 2=", config_path if os.path.exists(config_path): - return (config_path,False) - -# No file found - if not fallback: - return (False,False) + config_found = True # Example configuration for debian package if os.name == 'posix': @@ -108,38 +109,43 @@ def get_config(file_name, fallback = True): # the config directory for us so there's no need to check it # again example_path = '/usr/share/python-fpdb/' + file_name + '.example' - try: - shutil.copyfile(example_path, config_path) - msg = _("Config file has been created at %s.\n") % config_path - logging.info(msg) - return (config_path,False) - except IOError: - pass + if not config_found and fallback: + try: + shutil.copyfile(example_path, config_path) + example_copy = True + msg = _("Config file has been created at %s.\n") % config_path + logging.info(msg) + except IOError: + pass # OK, fall back to the .example file, should be in the start dir - if os.path.exists(file_name + ".example"): + elif os.path.exists(file_name + ".example"): try: print "" + example_path = file_name + ".example" check_dir(default_dir) - shutil.copyfile(file_name + ".example", config_path) - msg = _("No %s found\n in %s\n or %s\n") % (file_name, exec_dir, default_dir) \ - + _("Config file has been created at %s.\n") % config_path - print msg - logging.info(msg) - file_name = config_path + if not config_found and fallback: + shutil.copyfile(example_path, config_path) + example_copy = True + msg = _("No %s found\n in %s\n or %s\n") % (file_name, exec_dir, default_dir) \ + + _("Config file has been created at %s.\n") % config_path + print msg + logging.info(msg) except: print _("Error copying .example file, cannot fall back. Exiting.\n") sys.stderr.write(_("Error copying .example file, cannot fall back. Exiting.\n")) sys.stderr.write( str(sys.exc_info()) ) sys.exit() - else: + elif fallback: print _("No %s found, cannot fall back. Exiting.\n") % file_name sys.stderr.write(_("No %s found, cannot fall back. Exiting.\n") % file_name) sys.exit() - return (file_name,True) + + #print "get_config: returning "+str( (config_path,example_copy,example_path) ) + return (config_path,example_copy,example_path) def get_logger(file_name, config = "config", fallback = False, log_dir=None, log_file=None): - (conf_file,copied) = get_config(file_name, fallback = fallback) + (conf_file,copied,example_file) = get_config(file_name, fallback = fallback) if log_dir is None: log_dir = os.path.join(get_exec_path(), u'log') @@ -674,7 +680,7 @@ class Config: sys.stderr.write(_("Configuration file %s not found. Using defaults.") % (file)) file = None - if file is None: (file,self.example_copy) = get_config("HUD_config.xml", True) + if file is None: (file,self.example_copy,example_file) = get_config("HUD_config.xml", True) self.file = file self.dir_self = get_exec_path() @@ -685,27 +691,6 @@ class Config: self.log_file = os.path.join(self.dir_log, u'fpdb-log.txt') log = get_logger("logging.conf", "config", log_dir=self.dir_log) -# Parse even if there was no real config file found and we are using the example -# If using the example, we'll edit it later - log.info(_("Reading configuration file %s") % file) - print _("\nReading configuration file %s\n") % file - try: - doc = xml.dom.minidom.parse(file) - self.file_error = None - except: - log.error(_("Error parsing %s. See error log file.") % (file)) - traceback.print_exc(file=sys.stderr) - self.file_error = sys.exc_info()[1] - # we could add a parameter to decide whether to return or read a line and exit? - return - #print "press enter to continue" - #sys.stdin.readline() - #sys.exit() -#ExpatError: not well-formed (invalid token): line 511, column 4 -#sys.exc_info = (, ExpatError('not well-formed (invalid token): line 511, -# column 4',), ) - - self.doc = doc self.supported_sites = {} self.supported_games = {} self.supported_databases = {} # databaseName --> Database instance @@ -717,6 +702,32 @@ class Config: self.emails = {} self.gui_cash_stats = GUICashStats() + added,n = 1,0 # use n to prevent infinite loop if add_missing_elements() fails somehow + while added > 0 and n < 2: + n = n + 1 + log.info(_("Reading configuration file %s") % file) + print _("\nReading configuration file %s\n") % file + try: + doc = xml.dom.minidom.parse(file) + self.doc = doc + self.file_error = None + except: + log.error(_("Error parsing %s. See error log file.") % (file)) + traceback.print_exc(file=sys.stderr) + self.file_error = sys.exc_info()[1] + # we could add a parameter to decide whether to return or read a line and exit? + return + #print "press enter to continue" + #sys.stdin.readline() + #sys.exit() +#ExpatError: not well-formed (invalid token): line 511, column 4 +#sys.exc_info = (, ExpatError('not well-formed (invalid token): line 511, +# column 4',), ) + + if not self.example_copy and example_file is not None: + # reads example file and adds missing elements into current config + added = self.add_missing_elements(doc, example_file) + if doc.getElementsByTagName("general") == []: self.general.get_defaults() for gen_node in doc.getElementsByTagName("general"): @@ -792,7 +803,7 @@ class Config: self.set_db_parameters(db_name = 'fpdb', db_ip = df_parms['db-host'], db_user = df_parms['db-user'], db_pass = df_parms['db-password']) - self.save(file=os.path.join(self.default_config_path, "HUD_config.xml")) + self.save(file=os.path.join(self.dir_config, "HUD_config.xml")) if doc.getElementsByTagName("raw_hands") == []: self.raw_hands = RawHands() @@ -807,6 +818,40 @@ class Config: print "" #end def __init__ + def add_missing_elements(self, doc, example_file): + """ Look through example config file and add any elements that are not in the config + May need to add some 'enabled' attributes to turn things off - can't just delete a + config section now because this will add it back in""" + + nodes_added = 0 + + try: + example_doc = xml.dom.minidom.parse(example_file) + except: + log.error(_("Error parsing example file %s. See error log file.") % (example_file)) + return nodes_added + + for cnode in doc.getElementsByTagName("FreePokerToolsConfig"): + for example_cnode in example_doc.childNodes: + if example_cnode.localName == "FreePokerToolsConfig": + for e in example_cnode.childNodes: + #print "nodetype", e.nodeType, "name", e.localName, "found", len(doc.getElementsByTagName(e.localName)) + if e.nodeType == e.ELEMENT_NODE and doc.getElementsByTagName(e.localName) == []: + new = doc.importNode(e, True) # True means do deep copy + t_node = self.doc.createTextNode(" ") + cnode.appendChild(t_node) + cnode.appendChild(new) + t_node = self.doc.createTextNode("\r\n\r\n") + cnode.appendChild(t_node) + print "... adding missing config section: " + e.localName + nodes_added = nodes_added + 1 + + if nodes_added > 0: + print "Added %d missing config sections\n" % nodes_added + self.save() + + return nodes_added + def set_hhArchiveBase(self, path): self.imp.node.setAttribute("hhArchiveBase", path) From ee20cbbcc161e506c0122a235af79bc6b002b8a6 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 14:21:49 +0200 Subject: [PATCH 311/641] some small GUI string improvements --- pyfpdb/fpdb.pyw | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index adeb34c7..024d56ef 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -52,7 +52,7 @@ if os.name == 'nt' and sys.version[0:3] not in ('2.5', '2.6', '2.7') and '-r' no else: os.execvpe('python', ('python', 'fpdb.pyw', '-r'), os.environ) # first arg is ignored (name of program being run) else: - print _("\npython 2.5 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.")) exit() else: @@ -86,7 +86,7 @@ try: import gtk import pango except: - print _("Unable to load PYGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org.") + print _("Unable to load PyGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org.") raw_input(_("Press ENTER to continue.")) exit() @@ -436,7 +436,7 @@ class fpdb: diaHudTable.vbox.add(label) label.show() - label=gtk.Label(_("To configure things like colouring you will still have to manually edit your HUD_config.xml.")) + label=gtk.Label(_("To configure things like colouring you will still have to use the Preferences dialogue or manually edit your HUD_config.xml.")) diaHudTable.vbox.add(label) label.show() @@ -545,7 +545,7 @@ class fpdb: 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 deleting and recreating tables")) diastring = _("Please confirm that you want to (re-)create the tables. If there already are tables in the database ") \ - +self.db.database+" on "+self.db.host+_(" they will be deleted.\nThis may take a while.") + +self.db.database+" on "+self.db.host+_(" they will be deleted and you will have to re-import your histories.\nThis may take a while.") dia_confirm.format_secondary_text(diastring)#todo: make above string with bold for db, host and deleted # disable windowclose, do not want the the underlying processing interrupted mid-process dia_confirm.set_deletable(False) From 219180822f0cd3e6c3cbc552e6e30166b4d6271b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 14:24:04 +0200 Subject: [PATCH 312/641] l10n: improve create script, update PO files, some german translation --- pyfpdb/locale/create-po-file.sh | 1 + pyfpdb/locale/fpdb-de_DE.po | 149 +++++++++++++++++++------------- pyfpdb/locale/fpdb-en_GB.po | 14 +-- pyfpdb/locale/fpdb-hu_HU.po | 36 ++++---- 4 files changed, 117 insertions(+), 83 deletions(-) diff --git a/pyfpdb/locale/create-po-file.sh b/pyfpdb/locale/create-po-file.sh index d26c853a..49adc81f 100755 --- a/pyfpdb/locale/create-po-file.sh +++ b/pyfpdb/locale/create-po-file.sh @@ -1,3 +1,4 @@ cd .. +rm *.pyc python /usr/share/doc/python-2.7/examples/Tools/i18n/pygettext.py --output-dir=locale --default-domain=fpdb --output=fpdb-en_GB.po *.py* diff --git a/pyfpdb/locale/fpdb-de_DE.po b/pyfpdb/locale/fpdb-de_DE.po index 9d7032b7..86577671 100644 --- a/pyfpdb/locale/fpdb-de_DE.po +++ b/pyfpdb/locale/fpdb-de_DE.po @@ -4,8 +4,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-26 18:52+CEST\n" -"PO-Revision-Date: 2010-08-25 18:41+0200\n" +"POT-Creation-Date: 2010-08-29 14:22+CEST\n" +"PO-Revision-Date: 2010-08-29 14:20+0200\n" "Last-Translator: Steffen Schaumburg \n" "Language-Team: Fpdb\n" "Language: de\n" @@ -18,7 +18,7 @@ msgstr "" #: Anonymise.py:55 msgid "Could not find file %s" -msgstr "" +msgstr "Konnte Datei %s nicht finden" #: Anonymise.py:61 msgid "Output being written to" @@ -907,13 +907,13 @@ msgstr "" msgid "Log Viewer" msgstr "" -#: GuiGraphViewer.py:39 +#: GuiGraphViewer.py:56 msgid "" "Failed to load libs for graphing, graphing will not function. Please\n" " install numpy and matplotlib if you want to use graphs." msgstr "" -#: GuiGraphViewer.py:41 +#: GuiGraphViewer.py:58 msgid "" "This is of no consequence for other parts of the program, e.g. import \n" " and HUD are NOT affected by this problem." @@ -2412,17 +2412,20 @@ msgstr "" #: fpdb.pyw:48 msgid " - press return to continue\n" -msgstr "" +msgstr " - drücken Sie Enter um fortzufahren" #: fpdb.pyw:55 msgid "" "\n" -"python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" +"python 2.5-2.7 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" msgstr "" +"\n" +"Python 2.5-2.7 nicht gefunden, bitte installieren Sie Python 2.5, 2.6 oder " +"2.7 für fpdb\n" #: fpdb.pyw:56 fpdb.pyw:68 fpdb.pyw:90 msgid "Press ENTER to continue." -msgstr "" +msgstr "Drücken Sie ENTER um fortzufahren" #: fpdb.pyw:67 msgid "" @@ -2430,88 +2433,105 @@ msgid "" "not loading. Please install the PYWIN32 package from http://sourceforge.net/" "projects/pywin32/" msgstr "" +"Ihr Betriebssystem scheint Windows zu sein, aber die Windows Python " +"Extensions konnten nicht geladen werden. Bitte installieren Sie das PYWIN32-" +"Paket von http://sourceforge.net/projects/pywin32/" #: fpdb.pyw:89 msgid "" -"Unable to load PYGTK modules required for GUI. Please install PyCairo, " +"Unable to load PyGTK modules required for GUI. Please install PyCairo, " "PyGObject, and PyGTK from www.pygtk.org." msgstr "" +"Die für die GUI benötigten PyGTK module konnten nicht geladen werden. Bitte " +"installieren Sie PyCairo, PyGObject und PyGTK von www.pygtk.org." #: fpdb.pyw:247 msgid "" "Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, " "sqlcoder, Bostik, and others" msgstr "" +"Copyright 2008-2010, Steffen, Eratosthenes, Carl Gherardi, Eric Blade, _mt, " +"sqlcoder, Bostik und andere" #: fpdb.pyw:248 msgid "" "You are free to change, and distribute original or changed versions of fpdb " "within the rules set out by the license" msgstr "" +"Sie dürfen fpdb innerhalb der Regeln der Lizenz verändern, verbreiten und " +"verändert verbreiten." #: fpdb.pyw:249 msgid "Please see fpdb's start screen for license information" -msgstr "" +msgstr "Lizenzinformationen finden Sie auf fpdb's Startbildschirm" #: fpdb.pyw:253 msgid "and others" -msgstr "" +msgstr "und andere" #: fpdb.pyw:259 msgid "Operating System" -msgstr "" +msgstr "Betriebssystem" #: fpdb.pyw:280 msgid "Your config file is: " -msgstr "" +msgstr "Ihre Konfigurationsdatei ist:" #: fpdb.pyw:285 msgid "Version Information:" -msgstr "" +msgstr "Versionsinformationen:" #: fpdb.pyw:292 msgid "Threads: " -msgstr "" +msgstr "Threads:" #: fpdb.pyw:315 msgid "" "Updated preferences have not been loaded because windows are open. Re-start " "fpdb to load them." msgstr "" +"Die neuen Einstellungen konnten nicht geladen werden da fpdb-Fenster offen " +"sind. Bitte starten Sie fpdb neu um sie zu verwenden." #: fpdb.pyw:325 msgid "Maintain Databases" -msgstr "" +msgstr "Datenbanken verwalten" #: fpdb.pyw:335 msgid "saving updated db data" -msgstr "" +msgstr "speichere aktualisierte DB-Daten" #: fpdb.pyw:342 msgid "guidb response was " -msgstr "" +msgstr "GuiDBs Antwort war " #: fpdb.pyw:348 msgid "" "Cannot open Database Maintenance window because other windows have been " "opened. Re-start fpdb to use this option." msgstr "" +"Konnte Datenbank-Verwaltungsfenster nicht öffnen da andere Fenster geöffnet " +"waren/sind. Starten Sie fpdb neu um diese Funktion zu nutzen." #: fpdb.pyw:351 msgid "Number of Hands: " -msgstr "" +msgstr "Hände: " #: fpdb.pyw:352 msgid "" "\n" "Number of Tourneys: " msgstr "" +"\n" +"Tournamente: " #: fpdb.pyw:353 msgid "" "\n" "Number of TourneyTypes: " msgstr "" +"\n" +"Tournamentarten (TourneyTypes): " #: fpdb.pyw:354 msgid "Database Statistics" @@ -2519,40 +2539,46 @@ msgstr "Datenbankstatistiken" #: fpdb.pyw:363 msgid "HUD Configurator - choose category" -msgstr "" +msgstr "HUD-Konfigurator - Kategorieauswahl" #: fpdb.pyw:369 msgid "" "Please select the game category for which you want to configure HUD stats:" msgstr "" +"Bitte wählen Sie die Spielkategorie, für die Sie HUD-Statistiken " +"konfigurieren möchten:" #: fpdb.pyw:421 msgid "HUD Configurator - please choose your stats" -msgstr "" +msgstr "HUD-Konfigurator - Statistikauswahl" #: fpdb.pyw:427 msgid "Please choose the stats you wish to use in the below table." -msgstr "" +msgstr "Bitte wählen Sie die Statistiken, die Sie nutzen möchten." #: fpdb.pyw:431 msgid "Note that you may not select any stat more than once or it will crash." msgstr "" +"Bitte beachten Sie, dass das HUD abstürzt wenn Sie Statistiken mehr als " +"einmal auswählen." #: fpdb.pyw:435 msgid "" "It is not currently possible to select \"empty\" or anything else to that " "end." -msgstr "" +msgstr "Es ist momentan nicht möglich \"leer\" o.ä. auszuwählen." #: fpdb.pyw:439 msgid "" -"To configure things like colouring you will still have to manually edit your " -"HUD_config.xml." +"To configure things like colouring you will still have to use the " +"Preferences dialogue or manually edit your HUD_config.xml." msgstr "" +"Um Farben usw. zu konfigurieren müssen Sie weiterhin den Einstellungs-Dialog " +"verwenden oder Ihre HUD_config.xml manuell bearbeiten." #: fpdb.pyw:546 msgid "Confirm deleting and recreating tables" -msgstr "" +msgstr "Tabellen löschen und reinitialisieren" #: fpdb.pyw:547 msgid "" @@ -2562,17 +2588,17 @@ msgstr "" #: fpdb.pyw:548 msgid "" -" they will be deleted.\n" +" they will be deleted and you will have to re-import your histories.\n" "This may take a while." msgstr "" #: fpdb.pyw:573 msgid "User cancelled recreating tables" -msgstr "" +msgstr "Benutzer hat Reinitialisierung der Tabellen abgebrochen" #: fpdb.pyw:580 msgid "Please confirm that you want to re-create the HUD cache." -msgstr "" +msgstr "Bitte bestätigen Sie, dass Sie den HUD-Cache neu erstellen möchten." #: fpdb.pyw:588 msgid " Hero's cache starts: " @@ -2584,35 +2610,36 @@ msgstr "" #: fpdb.pyw:615 msgid " Rebuilding HUD Cache ... " -msgstr "" +msgstr " Der HUD-Cache wird neu erstellt ... " #: fpdb.pyw:623 msgid "User cancelled rebuilding hud cache" -msgstr "" +msgstr "Benutzer hat Neuerstellung des HUD-Cache abgebrochen" #: fpdb.pyw:635 msgid "Confirm rebuilding database indexes" -msgstr "" +msgstr "Bestätigung der Neuerstellung der Datenbankindexe" #: fpdb.pyw:636 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" +"Bitte bestätigen Sie, dass Sie die Datenbankindexe neu erstellen möchten." #: fpdb.pyw:644 msgid " Rebuilding Indexes ... " -msgstr "" +msgstr " Datenbankindexe werden neu erstellt ... " #: fpdb.pyw:651 msgid " Cleaning Database ... " -msgstr "" +msgstr " Reinige Datenbank ... " #: fpdb.pyw:656 msgid " Analyzing Database ... " -msgstr "" +msgstr " Analysiere Datenbank ... " #: fpdb.pyw:661 msgid "User cancelled rebuilding db indexes" -msgstr "" +msgstr "Benutzer hat Neuerstellung der Datenbankindexe abgebrochen" #: fpdb.pyw:756 msgid "" @@ -2621,7 +2648,7 @@ msgstr "" #: fpdb.pyw:759 msgid "Fatal Error - Config File Missing" -msgstr "" +msgstr "Schwerer Fehler - Konfigurationsdatei nicht gefunden" #: fpdb.pyw:761 msgid "Please copy the config file from the docs folder to:" @@ -2642,7 +2669,6 @@ msgid "_Quit" msgstr "_Beenden" #: fpdb.pyw:827 -#, fuzzy msgid "L" msgstr "L" @@ -2688,31 +2714,31 @@ msgstr "" #: fpdb.pyw:834 msgid "A" -msgstr "" +msgstr "A" #: fpdb.pyw:834 msgid "_Auto Import and HUD" -msgstr "" +msgstr "_Autoimport und HUD" #: fpdb.pyw:835 msgid "H" -msgstr "" +msgstr "H" #: fpdb.pyw:835 msgid "_HUD Configurator" -msgstr "" +msgstr "_HUD-Konfigurator" #: fpdb.pyw:836 msgid "G" -msgstr "" +msgstr "G" #: fpdb.pyw:836 msgid "_Graphs" -msgstr "" +msgstr "_Graphen" #: fpdb.pyw:837 msgid "P" -msgstr "" +msgstr "P" #: fpdb.pyw:837 msgid "Ring _Player Stats (tabulated view, not on pgsql)" @@ -2720,7 +2746,7 @@ msgstr "" #: fpdb.pyw:838 msgid "T" -msgstr "" +msgstr "T" #: fpdb.pyw:838 msgid "_Tourney Player Stats (tabulated view, not on pgsql)" @@ -2728,39 +2754,39 @@ msgstr "" #: fpdb.pyw:839 msgid "Tourney _Viewer" -msgstr "" +msgstr "Tourney-_Betrachter" #: fpdb.pyw:840 msgid "O" -msgstr "" +msgstr "O" #: fpdb.pyw:840 msgid "P_ositional Stats (tabulated view, not on sqlite)" -msgstr "" +msgstr "Statistiken nach Position (Tabelle, nicht auf sqlite)" #: fpdb.pyw:841 fpdb.pyw:1057 msgid "Session Stats" -msgstr "" +msgstr "Statistiken nach Sitzung" #: fpdb.pyw:842 msgid "_Database" -msgstr "" +msgstr "_Datenbank" #: fpdb.pyw:843 msgid "_Maintain Databases" -msgstr "" +msgstr "Datenbanken _Verwalten" #: fpdb.pyw:844 msgid "Create or Recreate _Tables" -msgstr "" +msgstr "_Tabellen erstellen oder neu erstellen" #: fpdb.pyw:845 msgid "Rebuild HUD Cache" -msgstr "" +msgstr "HUD-Cache neu erstellen" #: fpdb.pyw:846 msgid "Rebuild DB Indexes" -msgstr "" +msgstr "Datenbankindexe neu erstellen" #: fpdb.pyw:847 msgid "_Statistics" @@ -2768,23 +2794,23 @@ msgstr "_Statistiken" #: fpdb.pyw:848 msgid "Dump Database to Textfile (takes ALOT of time)" -msgstr "" +msgstr "Datenbank in eine Textdatei schreiben (dauert SEHR lange)" #: fpdb.pyw:849 msgid "_Help" -msgstr "" +msgstr "_Hilfe" #: fpdb.pyw:850 msgid "_Log Messages" -msgstr "" +msgstr "_Log-Dateien" #: fpdb.pyw:851 msgid "A_bout, License, Copying" -msgstr "" +msgstr "_Über, Lizenz, Kopieren" #: fpdb.pyw:869 msgid "There is an error in your config file\n" -msgstr "" +msgstr "Fehler in Ihrer Konfigurationsdatei\n" #: fpdb.pyw:870 msgid "" @@ -2792,6 +2818,9 @@ msgid "" "\n" "Error is: " msgstr "" +"\n" +"\n" +"Der Fehler ist:" #: fpdb.pyw:871 msgid "CONFIG FILE ERROR" diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.po index 350b9f5a..6776e979 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-26 18:52+CEST\n" +"POT-Creation-Date: 2010-08-29 14:22+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -893,13 +893,13 @@ msgstr "" msgid "Log Viewer" msgstr "" -#: GuiGraphViewer.py:39 +#: GuiGraphViewer.py:56 msgid "" "Failed to load libs for graphing, graphing will not function. Please\n" " install numpy and matplotlib if you want to use graphs." msgstr "" -#: GuiGraphViewer.py:41 +#: GuiGraphViewer.py:58 msgid "" "This is of no consequence for other parts of the program, e.g. import \n" " and HUD are NOT affected by this problem." @@ -2394,7 +2394,7 @@ msgstr "" #: fpdb.pyw:55 msgid "" "\n" -"python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" +"python 2.5-2.7 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" msgstr "" #: fpdb.pyw:56 fpdb.pyw:68 fpdb.pyw:90 @@ -2406,7 +2406,7 @@ msgid "We appear to be running in Windows, but the Windows Python Extensions are msgstr "" #: fpdb.pyw:89 -msgid "Unable to load PYGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org." +msgid "Unable to load PyGTK modules required for GUI. Please install PyCairo, PyGObject, and PyGTK from www.pygtk.org." msgstr "" #: fpdb.pyw:247 @@ -2506,7 +2506,7 @@ msgid "It is not currently possible to select \"empty\" or anything else to that msgstr "" #: fpdb.pyw:439 -msgid "To configure things like colouring you will still have to manually edit your HUD_config.xml." +msgid "To configure things like colouring you will still have to use the Preferences dialogue or manually edit your HUD_config.xml." msgstr "" #: fpdb.pyw:546 @@ -2519,7 +2519,7 @@ msgstr "" #: fpdb.pyw:548 msgid "" -" they will be deleted.\n" +" they will be deleted and you will have to re-import your histories.\n" "This may take a while." msgstr "" diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 651006ea..bbf68785 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-26 18:52+CEST\n" +"POT-Creation-Date: 2010-08-29 14:22+CEST\n" "PO-Revision-Date: 2010-08-28 12:32+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" @@ -854,8 +854,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" -"s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " +"%s másodperc alatt - %.0f/mp" #: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" @@ -963,7 +963,7 @@ msgstr "Napló böngésző (teszt)" msgid "Log Viewer" msgstr "Napló böngésző" -#: GuiGraphViewer.py:39 +#: GuiGraphViewer.py:56 msgid "" "Failed to load libs for graphing, graphing will not function. Please\n" " install numpy and matplotlib if you want to use graphs." @@ -971,7 +971,7 @@ msgstr "" "Nem sikerült a grafikonokhoz szükséges libraryl betöltése.\n" "A grafikonokhoz telepítsd a numpy-t és a matplotlib-et." -#: GuiGraphViewer.py:41 +#: GuiGraphViewer.py:58 msgid "" "This is of no consequence for other parts of the program, e.g. import \n" " and HUD are NOT affected by this problem." @@ -1306,11 +1306,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -2527,9 +2527,10 @@ msgid " - press return to continue\n" msgstr " - nyomj ENTER-t a folytatáshoz\n" #: fpdb.pyw:55 +#, fuzzy msgid "" "\n" -"python 2.5 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" +"python 2.5-2.7 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" msgstr "" "\n" "Python 2.5 nincs meg, kérlek telepítsd a Python 2.5-öt, 2.6-ot, vagy 2.7-et " @@ -2550,8 +2551,9 @@ msgstr "" "http://sourceforge.net/projects/pywin32/" #: fpdb.pyw:89 +#, fuzzy msgid "" -"Unable to load PYGTK modules required for GUI. Please install PyCairo, " +"Unable to load PyGTK modules required for GUI. Please install PyCairo, " "PyGObject, and PyGTK from www.pygtk.org." msgstr "" "Nem sikerült a GUI által igényelt PyGTK modulok betöltése. Kérlek telepítsd " @@ -2678,9 +2680,10 @@ msgid "" msgstr "Jelenleg nem lehetséges olyat választani, hogy \"üres\" vagy hasonló." #: fpdb.pyw:439 +#, fuzzy msgid "" -"To configure things like colouring you will still have to manually edit your " -"HUD_config.xml." +"To configure things like colouring you will still have to use the " +"Preferences dialogue or manually edit your HUD_config.xml." msgstr "" "Bizonyos dolgok (pl. színezés) beállításához egyelőre még kézzel kell " "szerkesztened a HUD_config.xml fájlt." @@ -2698,8 +2701,9 @@ msgstr "" "már vannak táblák az adatbázisban (" #: fpdb.pyw:548 +#, fuzzy msgid "" -" they will be deleted.\n" +" they will be deleted and you will have to re-import your histories.\n" "This may take a while." msgstr "" "), akkor azok törölve lesznek.\n" @@ -3136,8 +3140,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" -"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " +"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1078 msgid "Help" From 693dfb4e19a9faf53b20ea498e35b94c69a865e8 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 14:25:44 +0200 Subject: [PATCH 313/641] update GUI version string to 0.20.906 plus git --- pyfpdb/fpdb.pyw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 024d56ef..cefc87ac 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -129,7 +129,7 @@ import Configuration import Exceptions import Stats -VERSION = "0.20.906" +VERSION = "0.20.906 plus git" class fpdb: From a81dd66f227cd52f2669ca175c78977abd8dd1f8 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Sun, 29 Aug 2010 14:26:38 +0200 Subject: [PATCH 314/641] l10n: updated Hungarian translation --- pyfpdb/locale/fpdb-hu_HU.po | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index bbf68785..5d4b6e45 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" "POT-Creation-Date: 2010-08-29 14:22+CEST\n" -"PO-Revision-Date: 2010-08-28 12:32+0200\n" +"PO-Revision-Date: 2010-08-29 14:25+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -854,8 +854,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " -"%s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" +"s másodperc alatt - %.0f/mp" #: GuiDatabase.py:106 GuiLogView.py:96 msgid "Refresh" @@ -1306,11 +1306,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -2527,14 +2527,13 @@ msgid " - press return to continue\n" msgstr " - nyomj ENTER-t a folytatáshoz\n" #: fpdb.pyw:55 -#, fuzzy msgid "" "\n" "python 2.5-2.7 not found, please install python 2.5, 2.6 or 2.7 for fpdb\n" msgstr "" "\n" -"Python 2.5 nincs meg, kérlek telepítsd a Python 2.5-öt, 2.6-ot, vagy 2.7-et " -"az fpdb számára\n" +"Python 2.5-2.7 nem található, kérlek telepítsd a Python 2.5-öt, 2.6-ot, vagy " +"2.7-et az fpdb számára\n" #: fpdb.pyw:56 fpdb.pyw:68 fpdb.pyw:90 msgid "Press ENTER to continue." @@ -2551,7 +2550,6 @@ msgstr "" "http://sourceforge.net/projects/pywin32/" #: fpdb.pyw:89 -#, fuzzy msgid "" "Unable to load PyGTK modules required for GUI. Please install PyCairo, " "PyGObject, and PyGTK from www.pygtk.org." @@ -2680,13 +2678,13 @@ msgid "" msgstr "Jelenleg nem lehetséges olyat választani, hogy \"üres\" vagy hasonló." #: fpdb.pyw:439 -#, fuzzy msgid "" "To configure things like colouring you will still have to use the " "Preferences dialogue or manually edit your HUD_config.xml." msgstr "" -"Bizonyos dolgok (pl. színezés) beállításához egyelőre még kézzel kell " -"szerkesztened a HUD_config.xml fájlt." +"Bizonyos dolgok (pl. színezés) beállításához egyelőre még a Beállítások " +"menüpontot kell használnod, vagy kézzel kell szerkesztened a HUD_config.xml " +"fájlt." #: fpdb.pyw:546 msgid "Confirm deleting and recreating tables" @@ -2701,12 +2699,12 @@ msgstr "" "már vannak táblák az adatbázisban (" #: fpdb.pyw:548 -#, fuzzy msgid "" " they will be deleted and you will have to re-import your histories.\n" "This may take a while." msgstr "" -"), akkor azok törölve lesznek.\n" +"), akkor azok törölve lesznek, és újra kell importálnod a " +"leosztástörténeteket.\n" "Ja, és ez eltarthat egy darabig:)" #: fpdb.pyw:573 @@ -3140,8 +3138,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " -"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" +"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1078 msgid "Help" From 641b863cbf80e588a36df05c98ee95124c87fb0b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 14:37:29 +0200 Subject: [PATCH 315/641] l10n: update mo files --- pyfpdb/locale/de/LC_MESSAGES/fpdb.mo | Bin 1048 -> 7463 bytes pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 64382 -> 64610 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo index 291c02d07d070c90c03e5dbad86cca418d8d7d00..eed07f34f8ceb70e4deaedb2e68839d2b3a7dc43 100644 GIT binary patch literal 7463 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 delta 390 zcmZ2(HG`x6o)F7a1|Z-AVi_Rr0dbJPA0V3xi2p)q4n_!H7)r|lX02*e-@y_g|%D3nfs z(%C>7sF9%zNP`^R4WvO9&jQjQikM zay*_4Hp%&UB}Mr;cEOVwIYfB^ic;g#Qj1dal2eN(@8Ppy@lDLkn=Hq#F}a4{iOo#G z(89`e@)3R|c2f}3#BlRlehtRS=|b|TM%9am@x{Al<`tKu=H!&-rKjdic9F5=@<=Q# PD9KIDJG^J|dKn7Ore-*Vr??#SO4r4F^ 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 U_^^drZe@CB6_-4`^=i=n00z60=Kufz delta 11801 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 Date: Sun, 29 Aug 2010 15:19:04 +0200 Subject: [PATCH 316/641] gentoo: add combined ebuild --- packaging/gentoo/fpdb-all.ebuild | 90 ++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 packaging/gentoo/fpdb-all.ebuild diff --git a/packaging/gentoo/fpdb-all.ebuild b/packaging/gentoo/fpdb-all.ebuild new file mode 100644 index 00000000..49e20d50 --- /dev/null +++ b/packaging/gentoo/fpdb-all.ebuild @@ -0,0 +1,90 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="2" + +inherit eutils +inherit games +if [[ ${PV} = 9999* ]]; then + inherit git +fi + +NEED_PYTHON=2.6 + +DESCRIPTION="A free/open source tracker/HUD for use with online poker" +HOMEPAGE="http://fpdb.wiki.sourceforge.net/" +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://git.assembla.com/fpdb.git" + KEYWORDS="" + IUSE="graph mysql postgres sqlite linguas_hu linguas_it" +elif [[ ${PV} = 0.20.90* ]]; then + SRC_URI="mirror://sourceforge/${PN}/Snapshots/${P}.tar.bz2" + KEYWORDS="~amd64 ~x86" + IUSE="graph mysql postgres sqlite linguas_hu linguas_it" +else; then + SRC_URI="mirror://sourceforge/${PN}/${PV}/${P}.tar.bz2" + KEYWORDS="~amd64 ~x86" + IUSE="graph mysql postgres sqlite" +fi + +LICENSE="AGPL-3" +SLOT="0" + +RDEPEND=" + mysql? ( virtual/mysql + dev-python/mysql-python ) + postgres? ( dev-db/postgresql-server + dev-python/psycopg ) + sqlite? ( dev-lang/python[sqlite] + dev-python/numpy ) + >=x11-libs/gtk+-2.10 + dev-python/pygtk + graph? ( dev-python/numpy + dev-python/matplotlib[gtk] ) + dev-python/python-xlib + dev-python/pytz" +DEPEND="${RDEPEND}" + +if [[ ${PV} = 9999* ]]; then + src_unpack() { + git_src_unpack + } +fi + +src_install() { + insinto "${GAMES_DATADIR}"/${PN} + doins -r gfx + doins -r pyfpdb + + if [[ ${PV} >= 0.20.901 ]]; then + if use linguas_hu; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo + fi + + if use linguas_it; then + dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo + fi + fi + + doins readme.txt + + exeinto "${GAMES_DATADIR}"/${PN} + doexe run_fpdb.py + + dodir "${GAMES_BINDIR}" + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + + newicon gfx/fpdb-icon.png ${PN}.png + make_desktop_entry ${PN} + + chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + prepgamesdirs +} + +pkg_postinst() { + games_pkg_postinst + elog "Note that if you really want to use mysql or postgresql you will have to create" + elog "the database and user yourself and enter it into the fpdb config." + elog "You can find the instructions on the project's website." +} From c6a9baa31f1fecbfac3404ac039124984c160d43 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 15:37:26 +0200 Subject: [PATCH 317/641] gentoo: fix bash errors and repoman complaints --- packaging/gentoo/fpdb-all.ebuild | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packaging/gentoo/fpdb-all.ebuild b/packaging/gentoo/fpdb-all.ebuild index 49e20d50..36a0823e 100644 --- a/packaging/gentoo/fpdb-all.ebuild +++ b/packaging/gentoo/fpdb-all.ebuild @@ -7,25 +7,25 @@ EAPI="2" inherit eutils inherit games if [[ ${PV} = 9999* ]]; then - inherit git + inherit git fi NEED_PYTHON=2.6 DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" +IUSE="graph mysql postgres sqlite" if [[ ${PV} = 9999* ]]; then EGIT_REPO_URI="git://git.assembla.com/fpdb.git" KEYWORDS="" - IUSE="graph mysql postgres sqlite linguas_hu linguas_it" + IUSE="${IUSE} linguas_hu linguas_it" elif [[ ${PV} = 0.20.90* ]]; then SRC_URI="mirror://sourceforge/${PN}/Snapshots/${P}.tar.bz2" KEYWORDS="~amd64 ~x86" - IUSE="graph mysql postgres sqlite linguas_hu linguas_it" -else; then + IUSE="${IUSE} linguas_hu linguas_it" +else SRC_URI="mirror://sourceforge/${PN}/${PV}/${P}.tar.bz2" KEYWORDS="~amd64 ~x86" - IUSE="graph mysql postgres sqlite" fi LICENSE="AGPL-3" @@ -57,7 +57,7 @@ src_install() { doins -r gfx doins -r pyfpdb - if [[ ${PV} >= 0.20.901 ]]; then + if [[ ${PV} > 0.20.900 ]]; then if use linguas_hu; then dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo fi From 909b47cdbb5588ecb7a3c497c1d60eb38d7911dd Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Sun, 29 Aug 2010 17:03:49 +0200 Subject: [PATCH 318/641] ebuild: added LINGUAS_DE, removed LINGUAS_IT, cleaned up checks --- packaging/gentoo/fpdb-all.ebuild | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packaging/gentoo/fpdb-all.ebuild b/packaging/gentoo/fpdb-all.ebuild index 36a0823e..65b5e9ec 100644 --- a/packaging/gentoo/fpdb-all.ebuild +++ b/packaging/gentoo/fpdb-all.ebuild @@ -18,11 +18,15 @@ IUSE="graph mysql postgres sqlite" if [[ ${PV} = 9999* ]]; then EGIT_REPO_URI="git://git.assembla.com/fpdb.git" KEYWORDS="" - IUSE="${IUSE} linguas_hu linguas_it" + IUSE="${IUSE} linguas_de linguas_hu" elif [[ ${PV} = 0.20.90* ]]; then SRC_URI="mirror://sourceforge/${PN}/Snapshots/${P}.tar.bz2" KEYWORDS="~amd64 ~x86" - IUSE="${IUSE} linguas_hu linguas_it" + if [[ ${PV} > 0.20.906 ]]; then + IUSE="${IUSE} linguas_de linguas_hu" + elif [[ ${PV} > 0.20.904 ]]; then + IUSE="${IUSE} linguas_hu" + fi else SRC_URI="mirror://sourceforge/${PN}/${PV}/${P}.tar.bz2" KEYWORDS="~amd64 ~x86" @@ -57,14 +61,17 @@ src_install() { doins -r gfx doins -r pyfpdb - if [[ ${PV} > 0.20.900 ]]; then + if [[ ${PV} > 0.20.904 ]]; then if use linguas_hu; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo + msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo fi + domo pyfpdb/locale/*.mo - if use linguas_it; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo + elif [[ ${PV} > 0.20.906 ]]; then + if use linguas_de; then + msgfmt pyfpdb/locale/fpdb-de_DE.po -o pyfpdb/locale/de.mo fi + domo pyfpdb/locale/*.mo fi doins readme.txt From 8a4e33c14c7839a22be0295a575ae41f5bf69821 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 17:37:21 +0200 Subject: [PATCH 319/641] gentoo: back to split ebuilds as recommended by sunrise on IRC --- packaging/gentoo/current_stable.ebuild | 2 +- packaging/gentoo/current_testing.ebuild | 12 ++- packaging/gentoo/dev-readme.txt | 5 -- packaging/gentoo/fpdb-9999.ebuild | 17 +++-- packaging/gentoo/fpdb-all.ebuild | 97 ------------------------- 5 files changed, 15 insertions(+), 118 deletions(-) delete mode 100644 packaging/gentoo/fpdb-all.ebuild diff --git a/packaging/gentoo/current_stable.ebuild b/packaging/gentoo/current_stable.ebuild index edc70791..23e9d147 100644 --- a/packaging/gentoo/current_stable.ebuild +++ b/packaging/gentoo/current_stable.ebuild @@ -7,7 +7,7 @@ EAPI="2" inherit eutils inherit games -NEED_PYTHON=2.5 +NEED_PYTHON=2.6 DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index 9741f2b8..db7d9bb6 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -7,7 +7,7 @@ EAPI="2" inherit eutils inherit games -NEED_PYTHON=2.5 +NEED_PYTHON=2.6 DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" @@ -18,7 +18,7 @@ SLOT="0" KEYWORDS="~amd64 ~x86" #note: this should work on other architectures too, please send me your experiences -IUSE="graph mysql postgres sqlite linguas_hu linguas_it" +IUSE="graph mysql postgres sqlite linguas_hu" RDEPEND=" mysql? ( virtual/mysql dev-python/mysql-python ) @@ -40,12 +40,10 @@ src_install() { doins -r pyfpdb if use linguas_hu; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo - fi - - if use linguas_it; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo + msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo fi + + domo pyfpdb/locale/*.mo doins readme.txt diff --git a/packaging/gentoo/dev-readme.txt b/packaging/gentoo/dev-readme.txt index b81776fc..0effdf1b 100644 --- a/packaging/gentoo/dev-readme.txt +++ b/packaging/gentoo/dev-readme.txt @@ -1,10 +1,5 @@ Repoman currently gives the following errors for our ebuilds: ebuild.allmasked: This error can be ignored, as all our packages are supposed to be masked - ebuild.badheader 3 - games-util/fpdb/fpdb-0.20.1.ebuild: Malformed CVS Header on line: 3 - games-util/fpdb/fpdb-0.20.904.ebuild: Malformed CVS Header on line: 3 - games-util/fpdb/fpdb-9999.ebuild: Malformed CVS Header on line: 3 - not sure what the correct header is for a sunrise ebuild so leaving as-is for now Useful Links: http://overlays.gentoo.org/proj/sunrise/wiki/SunriseFaq diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index 683b3f45..2ed31832 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -8,7 +8,7 @@ inherit eutils inherit games inherit git -NEED_PYTHON=2.5 +NEED_PYTHON=2.6 DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" @@ -17,9 +17,8 @@ EGIT_REPO_URI="git://git.assembla.com/fpdb.git" LICENSE="AGPL-3" SLOT="0" KEYWORDS="" -#note: this should work on other architectures too, please send me your experiences -IUSE="graph mysql postgres sqlite linguas_hu linguas_it" +IUSE="graph mysql postgres sqlite linguas_de linguas_hu" RDEPEND=" mysql? ( virtual/mysql dev-python/mysql-python ) @@ -44,13 +43,15 @@ src_install() { doins -r gfx doins -r pyfpdb + if use linguas_de; then + msgfmt pyfpdb/locale/fpdb-de_DE.po -o pyfpdb/locale/de.mo + fi + if use linguas_hu; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/hu/LC_MESSAGES/${PN}.mo /usr/share/locale/hu/LC_MESSAGES/${PN}.mo - fi - - if use linguas_it; then - dosym "${GAMES_DATADIR}"/${PN}/pyfpdb/locale/it/LC_MESSAGES/${PN}.mo /usr/share/locale/it/LC_MESSAGES/${PN}.mo + msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo fi + + domo pyfpdb/locale/*.mo doins readme.txt diff --git a/packaging/gentoo/fpdb-all.ebuild b/packaging/gentoo/fpdb-all.ebuild deleted file mode 100644 index 65b5e9ec..00000000 --- a/packaging/gentoo/fpdb-all.ebuild +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright 1999-2010 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: $ - -EAPI="2" - -inherit eutils -inherit games -if [[ ${PV} = 9999* ]]; then - inherit git -fi - -NEED_PYTHON=2.6 - -DESCRIPTION="A free/open source tracker/HUD for use with online poker" -HOMEPAGE="http://fpdb.wiki.sourceforge.net/" -IUSE="graph mysql postgres sqlite" -if [[ ${PV} = 9999* ]]; then - EGIT_REPO_URI="git://git.assembla.com/fpdb.git" - KEYWORDS="" - IUSE="${IUSE} linguas_de linguas_hu" -elif [[ ${PV} = 0.20.90* ]]; then - SRC_URI="mirror://sourceforge/${PN}/Snapshots/${P}.tar.bz2" - KEYWORDS="~amd64 ~x86" - if [[ ${PV} > 0.20.906 ]]; then - IUSE="${IUSE} linguas_de linguas_hu" - elif [[ ${PV} > 0.20.904 ]]; then - IUSE="${IUSE} linguas_hu" - fi -else - SRC_URI="mirror://sourceforge/${PN}/${PV}/${P}.tar.bz2" - KEYWORDS="~amd64 ~x86" -fi - -LICENSE="AGPL-3" -SLOT="0" - -RDEPEND=" - mysql? ( virtual/mysql - dev-python/mysql-python ) - postgres? ( dev-db/postgresql-server - dev-python/psycopg ) - sqlite? ( dev-lang/python[sqlite] - dev-python/numpy ) - >=x11-libs/gtk+-2.10 - dev-python/pygtk - graph? ( dev-python/numpy - dev-python/matplotlib[gtk] ) - dev-python/python-xlib - dev-python/pytz" -DEPEND="${RDEPEND}" - -if [[ ${PV} = 9999* ]]; then - src_unpack() { - git_src_unpack - } -fi - -src_install() { - insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb - - if [[ ${PV} > 0.20.904 ]]; then - if use linguas_hu; then - msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo - fi - domo pyfpdb/locale/*.mo - - elif [[ ${PV} > 0.20.906 ]]; then - if use linguas_de; then - msgfmt pyfpdb/locale/fpdb-de_DE.po -o pyfpdb/locale/de.mo - fi - domo pyfpdb/locale/*.mo - fi - - doins readme.txt - - exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py - - dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} - - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} - - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw - prepgamesdirs -} - -pkg_postinst() { - games_pkg_postinst - elog "Note that if you really want to use mysql or postgresql you will have to create" - elog "the database and user yourself and enter it into the fpdb config." - elog "You can find the instructions on the project's website." -} From a9e06b9cf40fd134f11611c27a9e4131a645312b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 17:43:52 +0200 Subject: [PATCH 320/641] gentoo: update changelog --- packaging/gentoo/ChangeLog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packaging/gentoo/ChangeLog b/packaging/gentoo/ChangeLog index f72a9a13..57aaabe6 100644 --- a/packaging/gentoo/ChangeLog +++ b/packaging/gentoo/ChangeLog @@ -2,6 +2,19 @@ # Distributed under the terms of the GNU General Public License v2 # created by Steffen Schaumburg, steffen@schaumburger.info + 29 Aug 2010; Erki Ferenc + fpdb-0.20.906.ebuild, fpdb-9999.ebuild: + improve l10n handling + + 29 Aug 2010; Steffen Schaumburg + fpdb-0.20.1.ebuild, fpdb-0.20.906.ebuild, fpdb-9999.ebuild: + change required python version to 2.6 + +*fpdb-0.20.906 (29 Aug 2010) + 29 Aug 2010; Steffen Schaumburg + +fpdb-0.20.906.ebuild -fpdb-0.20.904.ebuild: + Bump version + *fpdb-0.20.1 fpdb-0.20.904 fpdb-9999 (17 Aug 2010) 17 Aug 2010; Steffen Schaumburg From 71bda38c5e6106361acd03fdefcfef7626a191b7 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 17:51:05 +0200 Subject: [PATCH 321/641] gentoo: update manifest, removing trailing whitespaces --- packaging/gentoo/Manifest | 10 +++++----- packaging/gentoo/current_testing.ebuild | 6 +++--- packaging/gentoo/fpdb-9999.ebuild | 10 +++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packaging/gentoo/Manifest b/packaging/gentoo/Manifest index 2b12bcf1..1096a2e6 100644 --- a/packaging/gentoo/Manifest +++ b/packaging/gentoo/Manifest @@ -1,7 +1,7 @@ DIST fpdb-0.20.1.tar.bz2 662807 RMD160 b5f22a684c605ddbba7d2154005a822b02a19490 SHA1 e4cc40de5849d3ae33a680d917b340ab37c6448b SHA256 46eff0625f300c070ce88c519ae6019f6e1c98a7725733c5e16b50a058247fe3 -DIST fpdb-0.20.904.tar.bz2 632871 RMD160 6af83a9b30e8b3f394b011a4dc92937f130b9e15 SHA1 083c51f1627f901e24801bf6abebf1d07646bd89 SHA256 5e72055fe7ebb0c6048282f8edc972ee01be21063d6f8071abef22111f3e82f9 -EBUILD fpdb-0.20.1.ebuild 1591 RMD160 56ccbca72353e56718a927178e58d148177f5846 SHA1 770df692b29b7314d70703010e1f6afac623c3f3 SHA256 e3f434df58d98760a118458166f9fdfcf3612712c78c704f089f6e8ec72bd224 -EBUILD fpdb-0.20.904.ebuild 1595 RMD160 b5cbcdb8d2984b149c833db8b6aee362168e9c7d SHA1 7151fd3cef087c38060b44adb622843a84209f33 SHA256 41c6ed71aa0ff727d670c94cc72cf595bcd038f601121e51222532df727a6d01 -EBUILD fpdb-9999.ebuild 1618 RMD160 843d309bbc2ccdd95dbb4b0eb08571d8e16d06ad SHA1 b1ebdbe0e40bd6c0d4ec417dd2b8a135884547a6 SHA256 72205c1f94bcf2c3f310d396928e357fabaee4861773044c1dac71f98f6596bf -MISC ChangeLog 395 RMD160 b195ccf198011356ca79b16071093c4d92e5927a SHA1 9aa56e5dc9c5d03b62fb60bc81069f3440b1f606 SHA256 b7ba8c180da0e6a405d939c4485f9c8e52fdcafb04207ef6de217a807015bd03 +DIST fpdb-0.20.906.tar.bz2 702558 RMD160 bc5d01ef4899502aea33f286ac4274ef7ef498ef SHA1 9791680d53de1b276dc0297ac43a0e11758d3e19 SHA256 9ae706d5e9c2a2ee031d2b222ba46e088993cc892fc08b5276bbfd5e44a0436b +EBUILD fpdb-0.20.1.ebuild 1508 RMD160 7585cd1de73172649e182782d427a476afed4036 SHA1 3c92d6dbb868b8b4c26b75539771641087742761 SHA256 9a7d302016e4c4d6cc18af14514bd5112d18aeb7dc6390a3413e3e4cc71da6bd +EBUILD fpdb-0.20.906.ebuild 1643 RMD160 ed44ee49d715458b54edbbe054eb5c9775c6ac7a SHA1 ebd8ea291ace0671d4eb264754dfb0616373a51a SHA256 a9bdad768a0ab5ef065f3e6e2e1bd89dded6e0d3b64c4771944c4aae7d163efd +EBUILD fpdb-9999.ebuild 1685 RMD160 f06457ead33dca99c0acf830f26bbf2f8ca12cd1 SHA1 70444fa4a88439955472407ec0b072970993631a SHA256 2df59120b376bb4e5966f8a719bc881c756b3210b7a30d394ee1753efbfd706e +MISC ChangeLog 831 RMD160 efd32886d09b0750e680716030c0034c3a280a25 SHA1 82f3eda3cd83cbba3e45d4b75593e74f3dd4f568 SHA256 d74efef05cf51ef3840ef043218c8a30c1bcccfa9d9d2e4ca1b7198ed1c91f29 MISC metadata.xml 550 RMD160 a6fa8799f644c0882f832a12cc9e6a0f4f09ae7f SHA1 3a40c442cadb1f532e0299040c2da79e9721dd4f SHA256 b5a1c538de3786446a87479b1023cdb4f084085feb7290959619739969ce7d3b diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index db7d9bb6..4d95b85b 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -40,10 +40,10 @@ src_install() { doins -r pyfpdb if use linguas_hu; then - msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo + msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo fi - - domo pyfpdb/locale/*.mo + + domo pyfpdb/locale/*.mo doins readme.txt diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index 2ed31832..480d8158 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -44,14 +44,14 @@ src_install() { doins -r pyfpdb if use linguas_de; then - msgfmt pyfpdb/locale/fpdb-de_DE.po -o pyfpdb/locale/de.mo + msgfmt pyfpdb/locale/fpdb-de_DE.po -o pyfpdb/locale/de.mo fi - + if use linguas_hu; then - msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo + msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo fi - - domo pyfpdb/locale/*.mo + + domo pyfpdb/locale/*.mo doins readme.txt From 2ff55401ca5ba41c98905162e3b2e318bc476778 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 18:25:41 +0200 Subject: [PATCH 322/641] gentoo: update ebuilds with sunrise suggestions (only testing done fully) --- packaging/gentoo/current_stable.ebuild | 7 ++----- packaging/gentoo/current_testing.ebuild | 25 +++++++++++-------------- packaging/gentoo/fpdb-9999.ebuild | 8 ++------ 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/packaging/gentoo/current_stable.ebuild b/packaging/gentoo/current_stable.ebuild index 23e9d147..666c7fee 100644 --- a/packaging/gentoo/current_stable.ebuild +++ b/packaging/gentoo/current_stable.ebuild @@ -4,10 +4,7 @@ EAPI="2" -inherit eutils -inherit games - -NEED_PYTHON=2.6 +inherit eutils games DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" @@ -49,7 +46,7 @@ src_install() { newicon gfx/fpdb-icon.png ${PN}.png make_desktop_entry ${PN} - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + fperms +x "${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw prepgamesdirs } diff --git a/packaging/gentoo/current_testing.ebuild b/packaging/gentoo/current_testing.ebuild index 4d95b85b..525200fb 100644 --- a/packaging/gentoo/current_testing.ebuild +++ b/packaging/gentoo/current_testing.ebuild @@ -4,10 +4,7 @@ EAPI="2" -inherit eutils -inherit games - -NEED_PYTHON=2.6 +inherit eutils games DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" @@ -36,27 +33,27 @@ DEPEND="${RDEPEND}" src_install() { insinto "${GAMES_DATADIR}"/${PN} - doins -r gfx - doins -r pyfpdb + doins -r gfx || die "failed to install gfx directory" + doins -r pyfpdb || die "failed to install pyfpdb directory" if use linguas_hu; then - msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo + msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo || die "failed to create hungarian mo file" fi - domo pyfpdb/locale/*.mo + domo pyfpdb/locale/*.mo || die "failed to install mo files" - doins readme.txt + doins readme.txt || die "failed to install readme.txt file" exeinto "${GAMES_DATADIR}"/${PN} - doexe run_fpdb.py + doexe run_fpdb.py || die "failed to install executable run_fpdb.py" dodir "${GAMES_BINDIR}" - dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} + dosym "${GAMES_DATADIR}"/${PN}/run_fpdb.py "${GAMES_BINDIR}"/${PN} || die "failed to create symlink for starting fpdb" - newicon gfx/fpdb-icon.png ${PN}.png - make_desktop_entry ${PN} + newicon gfx/fpdb-icon.png ${PN}.png || die "failed to install fpdb icon" + make_desktop_entry ${PN} || die "failed to create desktop entry" - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + fperms +x "${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw prepgamesdirs } diff --git a/packaging/gentoo/fpdb-9999.ebuild b/packaging/gentoo/fpdb-9999.ebuild index 480d8158..a2469183 100644 --- a/packaging/gentoo/fpdb-9999.ebuild +++ b/packaging/gentoo/fpdb-9999.ebuild @@ -4,11 +4,7 @@ EAPI="2" -inherit eutils -inherit games -inherit git - -NEED_PYTHON=2.6 +inherit eutils games git DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" @@ -64,7 +60,7 @@ src_install() { newicon gfx/fpdb-icon.png ${PN}.png make_desktop_entry ${PN} - chmod +x "${D}/${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw + fperms +x "${GAMES_DATADIR}"/${PN}/pyfpdb/*.pyw prepgamesdirs } From 168b1146463978d8afb2fe9f264bc4e51dd775b1 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 19:12:48 +0200 Subject: [PATCH 323/641] l10n: some minor string changes --- pyfpdb/GuiAutoImport.py | 20 ++++++++++---------- pyfpdb/fpdb.pyw | 19 +++++++++---------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/pyfpdb/GuiAutoImport.py b/pyfpdb/GuiAutoImport.py index c386f475..8170fd9f 100755 --- a/pyfpdb/GuiAutoImport.py +++ b/pyfpdb/GuiAutoImport.py @@ -113,7 +113,7 @@ class GuiAutoImport (threading.Thread): hbox.pack_start(lbl1, expand=True, fill=False) self.doAutoImportBool = False - self.startButton = gtk.ToggleButton(_(" Start _Autoimport ")) + self.startButton = gtk.ToggleButton(_(" Start _Auto Import ")) self.startButton.connect("clicked", self.startClicked, "start clicked") hbox.pack_start(self.startButton, expand=False, fill=False) @@ -132,7 +132,7 @@ class GuiAutoImport (threading.Thread): scrolledwindow.add(self.textview) self.mainVBox.show_all() - self.addText(_("AutoImport Ready.")) + self.addText(_("Auto Import Ready.")) def addText(self, text): end_iter = self.textbuffer.get_end_iter() @@ -145,7 +145,7 @@ class GuiAutoImport (threading.Thread): """runs when user clicks one of the browse buttons in the auto import tab""" current_path=data[1].get_text() - dia_chooser = gtk.FileChooserDialog(title=_("Please choose the path that you want to auto import"), + dia_chooser = gtk.FileChooserDialog(title=_("Please choose the path that you want to Auto Import"), action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK)) #dia_chooser.set_current_folder(pathname) @@ -179,9 +179,9 @@ class GuiAutoImport (threading.Thread): def reset_startbutton(self): if self.pipe_to_hud is not None: - self.startButton.set_label(_(u' Stop _Autoimport ')) + self.startButton.set_label(_(u' Stop _Auto Import ')) else: - self.startButton.set_label(_(u' Start _Autoimport ')) + self.startButton.set_label(_(u' Start _Auto Import ')) return False @@ -206,7 +206,7 @@ class GuiAutoImport (threading.Thread): if self.settings['global_lock'].acquire(False): # returns false immediately if lock not acquired self.addText(_("\nGlobal lock taken ... Auto Import Started.\n")) self.doAutoImportBool = True - widget.set_label(_(u' _Stop Autoimport ')) + widget.set_label(_(u' _Stop Auto Import ')) if self.pipe_to_hud is None: if Configuration.FROZEN: path = Configuration.EXEC_PATH @@ -246,19 +246,19 @@ class GuiAutoImport (threading.Thread): self.importtimer = gobject.timeout_add(interval * 1000, self.do_import) else: - self.addText(_("\nauto-import aborted - global lock not available")) + self.addText(_("\nAuto Import aborted - global lock not available")) else: # toggled off gobject.source_remove(self.importtimer) self.settings['global_lock'].release() self.doAutoImportBool = False # do_import will return this and stop the gobject callback timer - self.addText(_("\nStopping autoimport - global lock released.")) + self.addText(_("\nStopping Auto Import - global lock released.")) if self.pipe_to_hud.poll() is not None: - self.addText(_("\n * Stop Autoimport: HUD already terminated")) + self.addText(_("\n * Stop Auto Import: HUD already terminated")) else: #print >>self.pipe_to_hud.stdin, "\n" self.pipe_to_hud.communicate('\n') # waits for process to terminate self.pipe_to_hud = None - self.startButton.set_label(_(u' Start _Autoimport ')) + self.startButton.set_label(_(u' Start _Auto Import ')) #end def GuiAutoImport.startClicked diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index cefc87ac..d6cf4015 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -876,8 +876,7 @@ class fpdb: if self.config.example_copy: self.info_box(_("Config file") , _("has been created at:\n%s.\n") % self.config.file - + _("Edit your screen_name and hand history path in the supported_sites ") - + _("section of the Preferences window (Main menu) before trying to import hands.")) + + _("Edit your screen_name and hand history path in the supported_sites section of the Preferences window (Main menu) before trying to import hands.")) self.settings = {} self.settings['global_lock'] = self.lock if (os.sep=="/"): @@ -906,10 +905,10 @@ class fpdb: err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - ") \ + _("Please check that the MySQL service has been started") except Exceptions.FpdbPostgresqlAccessDenied: - err_msg = _("Postgres Server reports: Access denied. Are your permissions set correctly?") + err_msg = _("PostgreSQL Server reports: Access denied. Are your permissions set correctly?") except Exceptions.FpdbPostgresqlNoDatabase: - err_msg = _("Postgres client reports: Unable to connect - ") \ - + _("Please check that the Postgres service has been started") + err_msg = _("PostgreSQL client reports: Unable to connect - ") \ + + _("Please check that the PostgreSQL service has been started") if err_msg is not None: self.db = None self.warning_box(err_msg) @@ -966,10 +965,10 @@ class fpdb: def obtain_global_lock(self, source): ret = self.lock.acquire(source=source) # will return false if lock is already held if ret: - print _("\nGlobal lock taken by"), source + print (_("\nGlobal lock taken by %s") % source) self.lockTakenBy=source else: - print _("\nFailed to get global lock, it is currently held by"), source + print (_("\nFailed to get global lock, it is currently held by %s") % source) return ret # need to release it later: # self.lock.release() @@ -1134,8 +1133,8 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an if not options.errorsToConsole: fileName = os.path.join(self.config.dir_log, 'fpdb-errors.txt') - print _("\nNote: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n") \ - + self.config.dir_log + _("\nAny major error will be reported there _only_.\n") + print (_("\nNote: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in: %s") % self.config.dir_log) \ + + _("\nAny major error will be reported there _only_.\n") errorFile = open(fileName, 'w', 0) sys.stderr = errorFile @@ -1239,7 +1238,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an 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 hh directory %s\n\n Press YES to create this directory, or NO to select a new one.") % hhdir + 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() From 14ea4714b9c81b1d7b0c78ad2fc4645e26e07293 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 19:17:13 +0200 Subject: [PATCH 324/641] l10n: rename template po file to .pot, merge scripts --- pyfpdb/locale/create-mo-files.sh | 4 ---- pyfpdb/locale/create-po-file.sh | 4 ---- pyfpdb/locale/{fpdb-en_GB.po => fpdb-en_GB.pot} | 0 pyfpdb/locale/localise.sh | 14 ++++++++++++++ pyfpdb/locale/update-po-files.sh | 3 --- 5 files changed, 14 insertions(+), 11 deletions(-) delete mode 100755 pyfpdb/locale/create-mo-files.sh delete mode 100755 pyfpdb/locale/create-po-file.sh rename pyfpdb/locale/{fpdb-en_GB.po => fpdb-en_GB.pot} (100%) create mode 100755 pyfpdb/locale/localise.sh delete mode 100755 pyfpdb/locale/update-po-files.sh diff --git a/pyfpdb/locale/create-mo-files.sh b/pyfpdb/locale/create-mo-files.sh deleted file mode 100755 index 5df25bcb..00000000 --- a/pyfpdb/locale/create-mo-files.sh +++ /dev/null @@ -1,4 +0,0 @@ -cd .. -python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po -python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po - diff --git a/pyfpdb/locale/create-po-file.sh b/pyfpdb/locale/create-po-file.sh deleted file mode 100755 index 49adc81f..00000000 --- a/pyfpdb/locale/create-po-file.sh +++ /dev/null @@ -1,4 +0,0 @@ -cd .. -rm *.pyc -python /usr/share/doc/python-2.7/examples/Tools/i18n/pygettext.py --output-dir=locale --default-domain=fpdb --output=fpdb-en_GB.po *.py* - diff --git a/pyfpdb/locale/fpdb-en_GB.po b/pyfpdb/locale/fpdb-en_GB.pot similarity index 100% rename from pyfpdb/locale/fpdb-en_GB.po rename to pyfpdb/locale/fpdb-en_GB.pot diff --git a/pyfpdb/locale/localise.sh b/pyfpdb/locale/localise.sh new file mode 100755 index 00000000..89fba06f --- /dev/null +++ b/pyfpdb/locale/localise.sh @@ -0,0 +1,14 @@ +cd .. +rm *.pyc + +echo "creating template po file" +python /usr/share/doc/python-2.7/examples/Tools/i18n/pygettext.py --output-dir=locale --default-domain=fpdb --output=fpdb-en_GB.pot *.py* + +echo "merging template with existing translations" +msgmerge --update locale/fpdb-hu_HU.po locale/fpdb-en_GB.pot +msgmerge --update locale/fpdb-de_DE.po locale/fpdb-en_GB.pot + +echo "compiling mo files" +python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po +python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po + diff --git a/pyfpdb/locale/update-po-files.sh b/pyfpdb/locale/update-po-files.sh deleted file mode 100755 index f39b143d..00000000 --- a/pyfpdb/locale/update-po-files.sh +++ /dev/null @@ -1,3 +0,0 @@ -msgmerge --update fpdb-hu_HU.po fpdb-en_GB.po -msgmerge --update fpdb-de_DE.po fpdb-en_GB.po - From f27396ea12def4620870539f745ad131ad84db2c Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Sun, 29 Aug 2010 20:18:01 +0300 Subject: [PATCH 325/641] Generalise .po file updates This should catch all future translations too --- pyfpdb/locale/update-po-files.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pyfpdb/locale/update-po-files.sh b/pyfpdb/locale/update-po-files.sh index f39b143d..0b6956e6 100755 --- a/pyfpdb/locale/update-po-files.sh +++ b/pyfpdb/locale/update-po-files.sh @@ -1,3 +1,12 @@ -msgmerge --update fpdb-hu_HU.po fpdb-en_GB.po -msgmerge --update fpdb-de_DE.po fpdb-en_GB.po +#!/bin/sh + +# Our master file +REFERENCE_PO=fpdb-en_GB.po + +# Update all .po files +for po in *.po; do + if [ ${po} != ${REFERENCE_PO} ]; then + msgmerge --update ${po} ${REFERENCE_PO} + fi +done From 8265d9fc6e0f0810b274e539d1683ea22aa387b2 Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Sun, 22 Aug 2010 13:09:26 +0300 Subject: [PATCH 326/641] Remove trailing percent symbols from HUD values The values that are displayed in the HUD box included the '%' symbol if these values were percentages. This clutters the HUD for those who don't need such extra characters. This patch removes the trailing '%' from result[1]. The default formatting for HUD values is '%3.1f' and if decimal places need to be changed, the code for those is now simpler. A user who wishes to show a percent symbol after any given stat value, can edit HUD_config.xml and assign such stats the hudsuffix="%" attribute. This patch also changes the way the tooltip strings are constructed. Instead of appending the percent symbol to generated string, the '%' is now generated in place by the format-string stanza '%%'. --- pyfpdb/Stats.py | 457 +++++++++++++++++++++++------------------------- 1 file changed, 221 insertions(+), 236 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index ffb1e47e..22900da8 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -78,7 +78,6 @@ log = logging.getLogger("db") re_Places = re.compile("_[0-9]$") -re_Percent = re.compile("%$") # String manipulation import codecs @@ -88,35 +87,21 @@ def do_tip(widget, tip): _tip = Charset.to_utf8(tip) widget.set_tooltip_text(_tip) + def do_stat(stat_dict, player = 24, stat = 'vpip'): match = re_Places.search(stat) - if match is None: - result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) - else: + result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) + + # If decimal places have been defined, override result[1] + if match: base = stat[0:-2] places = int(stat[-1:]) - result = (0.0, '0.0', 'notset=0', 'notset=0', '0', 'not set') - try: - result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': base, 'player': player}) - except: - pass # - log.info(_("exception getting stat %s for player %s %s") % (base, str(player), str(sys.exc_info()))) - log.debug(_("Stats.do_stat result = %s") % str(result) ) - - match = re_Percent.search(result[1]) - try: - if match is None: - result = (result[0], "%.*f" % (places, result[0]), result[2], result[3], result[4], result[5]) - else: - result = (result[0], "%.*f%%" % (places, 100*result[0]), result[2], result[3], result[4], result[5]) - except: - log.info(_("error: %s") % str(sys.exc_info())) - raise + result[1] = '%.*f' % (places, 100.0*result[0]) return result # OK, for reference the tuple returned by the stat is: # 0 - The stat, raw, no formating, eg 0.33333333 -# 1 - formatted stat with appropriate precision and punctuation, eg 33% +# 1 - formatted stat with appropriate precision, eg. 33; shown in HUD # 2 - formatted stat with appropriate precision, punctuation and a hint, eg v=33% # 3 - same as #2 except name of stat instead of hint, eg vpip=33% # 4 - the calculation that got the stat, eg 9/27 @@ -147,17 +132,17 @@ def vpip(stat_dict, player): try: stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n']) return (stat, - '%3.1f' % (100*stat) + '%', - 'v=%3.1f' % (100*stat) + '%', - 'vpip=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']), + '%3.1f' % (100.0*stat), + 'v=%3.1f%%' % (100.0*stat), + 'vpip=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']), _('Voluntarily Put In Pot Pre-Flop%') ) except: return (stat, - '%3.1f' % (0) + '%', - 'v=%3.1f' % (0) + '%', - 'vpip=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'v=%3.1f%%' % (0), + 'vpip=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Voluntarily Put In Pot Pre-Flop%') ) @@ -167,18 +152,18 @@ def pfr(stat_dict, player): try: stat = float(stat_dict[player]['pfr'])/float(stat_dict[player]['n']) return (stat, - '%3.1f' % (100*stat) + '%', - 'p=%3.1f' % (100*stat) + '%', - 'pfr=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'p=%3.1f%%' % (100.0*stat), + 'pfr=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['pfr'], stat_dict[player]['n']), _('Pre-Flop Raise %') ) except: return (stat, - '%3.1f' % (0) + '%', - 'p=%3.1f' % (0) + '%', - 'pfr=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'p=%3.1f%%' % (0), + 'pfr=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Pre-Flop Raise %') ) @@ -188,18 +173,18 @@ def wtsd(stat_dict, player): try: stat = float(stat_dict[player]['sd'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100*stat) + '%', - 'w=%3.1f' % (100*stat) + '%', - 'wtsd=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']), + '%3.1f' % (100.0*stat), + 'w=%3.1f%%' % (100.0*stat), + 'wtsd=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']), _('% went to showdown') ) except: return (stat, - '%3.1f' % (0) + '%', - 'w=%3.1f' % (0) + '%', - 'wtsd=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'w=%3.1f%%' % (0), + 'wtsd=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% went to showdown') ) @@ -209,18 +194,18 @@ def wmsd(stat_dict, player): try: stat = float(stat_dict[player]['wmsd'])/float(stat_dict[player]['sd']) return (stat, - '%3.1f' % (100*stat) + '%', - 'w=%3.1f' % (100*stat) + '%', - 'wmsd=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'w=%3.1f%%' % (100.0*stat), + 'wmsd=%3.1f%%' % (100.0*stat), '(%5.1f/%d)' % (float(stat_dict[player]['wmsd']), stat_dict[player]['sd']), _('% won money at showdown') ) except: return (stat, - '%3.1f' % (0) + '%', - 'w=%3.1f' % (0) + '%', - 'wmsd=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'w=%3.1f%%' % (0), + 'wmsd=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% won money at showdown') ) @@ -230,19 +215,19 @@ def profit100(stat_dict, player): try: stat = float(stat_dict[player]['net'])/float(stat_dict[player]['n']) return (stat, - '%.0f' % (100.0*stat), - 'p=%.0f' % (100.0*stat), - 'p/100=%.0f' % (100.0*stat), + '%.0f' % (100.0*stat), + 'p=%.0f' % (100.0*stat), + 'p/100=%.0f' % (100.0*stat), '%d/%d' % (stat_dict[player]['net'], stat_dict[player]['n']), _('profit/100hands') ) except: print _("exception calcing p/100: 100 * %d / %d") % (stat_dict[player]['net'], stat_dict[player]['n']) return (stat, - '%.0f' % (0.0), - 'p=%.0f' % (0.0), - 'p/100=%.0f' % (0.0), - '(%d/%d)' % (0, 0), + '%.0f' % (0.0), + 'p=%.0f' % (0.0), + 'p/100=%.0f' % (0.0), + '(%d/%d)' % (0, 0), _('profit/100hands') ) @@ -252,19 +237,19 @@ def bbper100(stat_dict, player): try: stat = 100.0 * float(stat_dict[player]['net']) / float(stat_dict[player]['bigblind']) return (stat, - '%5.3f' % (stat), - 'bb100=%5.3f' % (stat), - 'bb100=%5.3f' % (stat), - '(%d,%d)' % (100*stat_dict[player]['net'],stat_dict[player]['bigblind']), + '%5.3f' % (stat), + 'bb100=%5.3f' % (stat), + 'bb100=%5.3f' % (stat), + '(%d,%d)' % (100*stat_dict[player]['net'],stat_dict[player]['bigblind']), _('big blinds/100 hands') ) except: log.info("exception calcing bb/100: "+str(stat_dict[player])) return (stat, - '%.0f' % (0), - 'bb100=%.0f' % (0), - 'bb100=%.0f' % (0), - '(%f)' % (0), + '%.0f' % (0), + 'bb100=%.0f' % (0), + 'bb100=%.0f' % (0), + '(%f)' % (0), _('big blinds/100 hands') ) @@ -274,19 +259,19 @@ def BBper100(stat_dict, player): try: stat = 50 * float(stat_dict[player]['net']) / float(stat_dict[player]['bigblind']) return (stat, - '%5.3f' % (stat), - 'BB100=%5.3f' % (stat), - 'BB100=%5.3f' % (stat), - '(%d,%d)' % (100*stat_dict[player]['net'],2*stat_dict[player]['bigblind']), + '%5.3f' % (stat), + 'BB100=%5.3f' % (stat), + 'BB100=%5.3f' % (stat), + '(%d,%d)' % (100*stat_dict[player]['net'],2*stat_dict[player]['bigblind']), _('Big Bets/100 hands') ) except: log.info(_("exception calcing BB/100: ")+str(stat_dict[player])) return (stat, - '%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - '(%f)' % (0.0), + '%.0f' % (0.0), + 'BB100=%.0f' % (0.0), + 'BB100=%.0f' % (0.0), + '(%f)' % (0.0), _('Big Bets/100 hands') ) @@ -297,10 +282,10 @@ def saw_f(stat_dict, player): den = float(stat_dict[player]['n']) stat = num/den return (stat, - '%3.1f' % (100*stat) + '%', - 'sf=%3.1f' % (100*stat) + '%', - 'saw_f=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']), + '%3.1f' % (100.0*stat), + 'sf=%3.1f%%' % (100.0*stat), + 'saw_f=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']), _('Flop Seen %') ) except: @@ -308,10 +293,10 @@ def saw_f(stat_dict, player): num = 0 den = 0 return (stat, - '%3.1f' % (stat) + '%', - 'sf=%3.1f' % (stat) + '%', - 'saw_f=%3.1f' % (stat) + '%', - '(%d/%d)' % (num, den), + '%3.1f' % (stat), + 'sf=%3.1f%%' % (stat), + 'saw_f=%3.1f%%' % (stat), + '(%d/%d)' % (num, den), _('Flop Seen %') ) @@ -352,18 +337,18 @@ def fold_f(stat_dict, player): try: stat = float(stat_dict[player]['fold_2'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff=%3.1f' % (100*stat) + '%', - 'fold_f=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']), + '%3.1f' % (100.0*stat), + 'ff=%3.1f%%' % (100.0*stat), + 'fold_f=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']), _('folded flop/4th') ) except: return (stat, - '%3.1f' % (0) + '%', - 'ff=%3.1f' % (0) + '%', - 'fold_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff=%3.1f%%' % (0), + 'fold_f=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('folded flop/4th') ) @@ -373,10 +358,10 @@ def steal(stat_dict, player): try: stat = float(stat_dict[player]['steal'])/float(stat_dict[player]['steal_opp']) return (stat, - '%3.1f' % (100*stat) + '%', - 'st=%3.1f' % (100*stat) + '%', - 'steal=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']), + '%3.1f' % (100.0*stat), + 'st=%3.1f%%' % (100.0*stat), + 'steal=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']), _('% steal attempted') ) except: @@ -388,10 +373,10 @@ def f_SB_steal(stat_dict, player): try: stat = float(stat_dict[player]['sbnotdef'])/float(stat_dict[player]['sbstolen']) return (stat, - '%3.1f' % (100*stat) + '%', - 'fSB=%3.1f' % (100*stat) + '%', - 'fSB_s=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['sbnotdef'], stat_dict[player]['sbstolen']), + '%3.1f' % (100.0*stat), + 'fSB=%3.1f%%' % (100.0*stat), + 'fSB_s=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['sbnotdef'], stat_dict[player]['sbstolen']), _('% folded SB to steal')) except: return (stat, @@ -407,10 +392,10 @@ def f_BB_steal(stat_dict, player): try: stat = float(stat_dict[player]['bbnotdef'])/float(stat_dict[player]['bbstolen']) return (stat, - '%3.1f' % (100*stat) + '%', - 'fBB=%3.1f' % (100*stat) + '%', - 'fBB_s=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']), + '%3.1f' % (100.0*stat), + 'fBB=%3.1f%%' % (100.0*stat), + 'fBB_s=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']), _('% folded BB to steal')) except: return (stat, @@ -429,10 +414,10 @@ def f_steal(stat_dict, player): stat = float(folded_blind)/float(blind_stolen) return (stat, - '%3.1f' % (100*stat) + '%', - 'fB=%3.1f' % (100*stat) + '%', - 'fB_s=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (folded_blind, blind_stolen), + '%3.1f' % (100.0*stat), + 'fB=%3.1f%%' % (100.0*stat), + 'fB_s=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (folded_blind, blind_stolen), _('% folded blind to steal')) except: return (stat, @@ -448,17 +433,17 @@ def three_B(stat_dict, player): try: stat = float(stat_dict[player]['tb_0'])/float(stat_dict[player]['tb_opp_0']) return (stat, - '%3.1f' % (100*stat) + '%', - '3B=%3.1f' % (100*stat) + '%', - '3B_pf=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), + '%3.1f' % (100.0*stat), + '3B=%3.1f%%' % (100.0*stat), + '3B_pf=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), _('% 3/4 Bet preflop/3rd')) except: return (stat, - '%3.1f' % (0) + '%', - '3B=%3.1f' % (0) + '%', - '3B_pf=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + '3B=%3.1f%%' % (0), + '3B_pf=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% 3/4 Bet preflop/3rd')) def WMsF(stat_dict, player): @@ -467,17 +452,17 @@ def WMsF(stat_dict, player): try: stat = float(stat_dict[player]['w_w_s_1'])/float(stat_dict[player]['saw_1']) return (stat, - '%3.1f' % (100*stat) + '%', - 'wf=%3.1f' % (100*stat) + '%', - 'w_w_f=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']), + '%3.1f' % (100.0*stat), + 'wf=%3.1f%%' % (100.0*stat), + 'w_w_f=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']), _('% won$/saw flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'wf=%3.1f' % (0) + '%', - 'w_w_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'wf=%3.1f%%' % (0), + 'w_w_f=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% won$/saw flop/4th')) def a_freq1(stat_dict, player): @@ -486,17 +471,17 @@ def a_freq1(stat_dict, player): try: stat = float(stat_dict[player]['aggr_1'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a1=%3.1f' % (100*stat) + '%', - 'a_fq_1=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'a1=%3.1f%%' % (100.0*stat), + 'a_fq_1=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['aggr_1'], stat_dict[player]['saw_f']), _('Aggression Freq flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a1=%3.1f' % (0) + '%', - 'a_fq_1=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a1=%3.1f%%' % (0), + 'a_fq_1=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq flop/4th')) def a_freq2(stat_dict, player): @@ -505,17 +490,17 @@ def a_freq2(stat_dict, player): try: stat = float(stat_dict[player]['aggr_2'])/float(stat_dict[player]['saw_2']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a2=%3.1f' % (100*stat) + '%', - 'a_fq_2=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']), + '%3.1f' % (100.0*stat), + 'a2=%3.1f%%' % (100.0*stat), + 'a_fq_2=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']), _('Aggression Freq turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a2=%3.1f' % (0) + '%', - 'a_fq_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a2=%3.1f%%' % (0), + 'a_fq_2=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq turn/5th')) def a_freq3(stat_dict, player): @@ -524,17 +509,17 @@ def a_freq3(stat_dict, player): try: stat = float(stat_dict[player]['aggr_3'])/float(stat_dict[player]['saw_3']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a3=%3.1f' % (100*stat) + '%', - 'a_fq_3=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'a3=%3.1f%%' % (100.0*stat), + 'a_fq_3=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['aggr_3'], stat_dict[player]['saw_3']), _('Aggression Freq river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a3=%3.1f' % (0) + '%', - 'a_fq_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a3=%3.1f%%' % (0), + 'a_fq_3=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq river/6th')) def a_freq4(stat_dict, player): @@ -543,17 +528,17 @@ def a_freq4(stat_dict, player): try: stat = float(stat_dict[player]['aggr_4'])/float(stat_dict[player]['saw_4']) return (stat, - '%3.1f' % (100*stat) + '%', - 'a4=%3.1f' % (100*stat) + '%', - 'a_fq_4=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']), + '%3.1f' % (100.0*stat), + 'a4=%3.1f%%' % (100.0*stat), + 'a_fq_4=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']), _('Aggression Freq 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a4=%3.1f' % (0) + '%', - 'a_fq_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'a4=%3.1f%%' % (0), + 'a_fq_4=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq 7th')) def a_freq_123(stat_dict, player): @@ -563,9 +548,9 @@ def a_freq_123(stat_dict, player): stat = float( stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] ) / float( stat_dict[player]['saw_1'] + stat_dict[player]['saw_2'] + stat_dict[player]['saw_3']); return (stat, - '%3.1f' % (100*stat) + '%', - 'afq=%3.1f' % (100*stat) + '%', - 'postf_aggfq=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'afq=%3.1f%%' % (100.0*stat), + 'postf_aggfq=%3.1f%%' % (100.0*stat), '(%d/%d)' % ( stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] @@ -576,10 +561,10 @@ def a_freq_123(stat_dict, player): _('Post-Flop Aggression Freq')) except: return (stat, - '%2.0f' % (0) + '%', - 'a3=%2.0f' % (0) + '%', - 'a_fq_3=%2.0f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%2.0f' % (0), + 'a3=%2.0f%%' % (0), + 'a_fq_3=%2.0f%%' % (0), + '(%d/%d)' % (0, 0), _('Post-Flop Aggression Freq')) def agg_freq(stat_dict, player): @@ -597,17 +582,17 @@ def agg_freq(stat_dict, player): stat = float (bet_raise) / float(post_call + post_fold + bet_raise) return (stat, - '%3.1f' % (100*stat) + '%', - 'afr=%3.1f' % (100*stat) + '%', - 'agg_fr=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)), + '%3.1f' % (100.0*stat), + 'afr=%3.1f%%' % (100.0*stat), + 'agg_fr=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)), _('Aggression Freq')) except: return (stat, - '%2.1f' % (0) + '%', - 'af=%3.1f' % (0) + '%', - 'agg_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%2.1f' % (0), + 'af=%3.1f%%' % (0), + 'agg_f=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('Aggression Freq')) def agg_fact(stat_dict, player): @@ -647,17 +632,17 @@ def cbet(stat_dict, player): oppt = stat_dict[player]['cb_opp_1']+stat_dict[player]['cb_opp_2']+stat_dict[player]['cb_opp_3']+stat_dict[player]['cb_opp_4'] stat = float(cbets)/float(oppt) return (stat, - '%3.1f' % (100*stat) + '%', - 'cbet=%3.1f' % (100*stat) + '%', - 'cbet=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (cbets, oppt), + '%3.1f' % (100.0*stat), + 'cbet=%3.1f%%' % (100.0*stat), + 'cbet=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (cbets, oppt), _('% continuation bet ')) except: return (stat, - '%3.1f' % (0) + '%', - 'cbet=%3.1f' % (0) + '%', - 'cbet=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cbet=%3.1f%%' % (0), + 'cbet=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet ')) def cb1(stat_dict, player): @@ -666,17 +651,17 @@ def cb1(stat_dict, player): try: stat = float(stat_dict[player]['cb_1'])/float(stat_dict[player]['cb_opp_1']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb1=%3.1f' % (100*stat) + '%', - 'cb_1=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['cb_1'], stat_dict[player]['cb_opp_1']), + '%3.1f' % (100.0*stat), + 'cb1=%3.1f%%' % (100.0*stat), + 'cb_1=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['cb_1'], stat_dict[player]['cb_opp_1']), _('% continuation bet flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb1=%3.1f' % (0) + '%', - 'cb_1=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb1=%3.1f%%' % (0), + 'cb_1=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet flop/4th')) def cb2(stat_dict, player): @@ -685,17 +670,17 @@ def cb2(stat_dict, player): try: stat = float(stat_dict[player]['cb_2'])/float(stat_dict[player]['cb_opp_2']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb2=%3.1f' % (100*stat) + '%', - 'cb_2=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['cb_2'], stat_dict[player]['cb_opp_2']), + '%3.1f' % (100.0*stat), + 'cb2=%3.1f%%' % (100.0*stat), + 'cb_2=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['cb_2'], stat_dict[player]['cb_opp_2']), _('% continuation bet turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb2=%3.1f' % (0) + '%', - 'cb_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb2=%3.1f%%' % (0), + 'cb_2=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet turn/5th')) def cb3(stat_dict, player): @@ -704,17 +689,17 @@ def cb3(stat_dict, player): try: stat = float(stat_dict[player]['cb_3'])/float(stat_dict[player]['cb_opp_3']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb3=%3.1f' % (100*stat) + '%', - 'cb_3=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['cb_3'], stat_dict[player]['cb_opp_3']), + '%3.1f' % (100.0*stat), + 'cb3=%3.1f%%' % (100.0*stat), + 'cb_3=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['cb_3'], stat_dict[player]['cb_opp_3']), _('% continuation bet river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb3=%3.1f' % (0) + '%', - 'cb_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb3=%3.1f%%' % (0), + 'cb_3=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet river/6th')) def cb4(stat_dict, player): @@ -723,17 +708,17 @@ def cb4(stat_dict, player): try: stat = float(stat_dict[player]['cb_4'])/float(stat_dict[player]['cb_opp_4']) return (stat, - '%3.1f' % (100*stat) + '%', - 'cb4=%3.1f' % (100*stat) + '%', - 'cb_4=%3.1f' % (100*stat) + '%', + '%3.1f' % (100.0*stat), + 'cb4=%3.1f%%' % (100.0*stat), + 'cb_4=%3.1f%%' % (100.0*stat), '(%d/%d)' % (stat_dict[player]['cb_4'], stat_dict[player]['cb_opp_4']), _('% continuation bet 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb4=%3.1f' % (0) + '%', - 'cb_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'cb4=%3.1f%%' % (0), + 'cb_4=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% continuation bet 7th')) def ffreq1(stat_dict, player): @@ -742,10 +727,10 @@ def ffreq1(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_1'])/float(stat_dict[player]['was_raised_1']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff1=%3.1f' % (100*stat) + '%', - 'ff_1=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']), + '%3.1f' % (100.0*stat), + 'ff1=%3.1f%%' % (100.0*stat), + 'ff_1=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']), _('% fold frequency flop/4th')) except: return (stat, @@ -761,17 +746,17 @@ def ffreq2(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_2'])/float(stat_dict[player]['was_raised_2']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff2=%3.1f' % (100*stat) + '%', - 'ff_2=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']), + '%3.1f' % (100.0*stat), + 'ff2=%3.1f%%' % (100.0*stat), + 'ff_2=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']), _('% fold frequency turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff2=%3.1f' % (0) + '%', - 'ff_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff2=%3.1f%%' % (0), + 'ff_2=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% fold frequency turn/5th')) def ffreq3(stat_dict, player): @@ -780,17 +765,17 @@ def ffreq3(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_3'])/float(stat_dict[player]['was_raised_3']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff3=%3.1f' % (100*stat) + '%', - 'ff_3=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']), + '%3.1f' % (100.0*stat), + 'ff3=%3.1f%%' % (100.0*stat), + 'ff_3=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']), _('% fold frequency river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff3=%3.1f' % (0) + '%', - 'ff_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff3=%3.1f%%' % (0), + 'ff_3=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% fold frequency river/6th')) def ffreq4(stat_dict, player): @@ -799,24 +784,24 @@ def ffreq4(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_4'])/float(stat_dict[player]['was_raised_4']) return (stat, - '%3.1f' % (100*stat) + '%', - 'ff4=%3.1f' % (100*stat) + '%', - 'ff_4=%3.1f' % (100*stat) + '%', - '(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']), + '%3.1f' % (100.0*stat), + 'ff4=%3.1f%%' % (100.0*stat), + 'ff_4=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']), _('% fold frequency 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff4=%3.1f' % (0) + '%', - 'ff_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + '%3.1f' % (0), + 'ff4=%3.1f%%' % (0), + 'ff_4=%3.1f%%' % (0), + '(%d/%d)' % (0, 0), _('% fold frequency 7th')) if __name__== "__main__": statlist = dir() misslist = [ "Configuration", "Database", "Charset", "codecs", "encoder" , "do_stat", "do_tip", "GInitiallyUnowned", "gtk", "pygtk" - , "re", "re_Percent", "re_Places" + , "re", "re_Places" ] statlist = [ x for x in statlist if x not in dir(sys) ] statlist = [ x for x in statlist if x not in dir(codecs) ] From a75ba5a288a9c7a49401cb42480fd6cf72049136 Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Sun, 22 Aug 2010 13:57:01 +0300 Subject: [PATCH 327/641] Return "hard" NA for missing/incalculable stats It makes very little sense to do a format string for nothing but zeroes in case of unknown values. Simply return a set of 'NA' strings in place of usual stats. This makes the error cases consistent throughout Stats.py --- pyfpdb/Stats.py | 211 ++++++++++++++++++++++++------------------------ 1 file changed, 105 insertions(+), 106 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index 22900da8..cfe82f0a 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -139,10 +139,10 @@ def vpip(stat_dict, player): _('Voluntarily Put In Pot Pre-Flop%') ) except: return (stat, - '%3.1f' % (0), - 'v=%3.1f%%' % (0), - 'vpip=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'v=NA', + 'vpip=NA', + '(0/0)', _('Voluntarily Put In Pot Pre-Flop%') ) @@ -160,10 +160,10 @@ def pfr(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'p=%3.1f%%' % (0), - 'pfr=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'p=NA', + 'pfr=NA', + '(0/0)', _('Pre-Flop Raise %') ) @@ -181,10 +181,10 @@ def wtsd(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'w=%3.1f%%' % (0), - 'wtsd=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'w=NA', + 'wtsd=NA', + '(0/0)', _('% went to showdown') ) @@ -202,10 +202,10 @@ def wmsd(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'w=%3.1f%%' % (0), - 'wmsd=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'w=NA', + 'wmsd=NA', + '(0/0)', _('% won money at showdown') ) @@ -224,10 +224,10 @@ def profit100(stat_dict, player): except: print _("exception calcing p/100: 100 * %d / %d") % (stat_dict[player]['net'], stat_dict[player]['n']) return (stat, - '%.0f' % (0.0), - 'p=%.0f' % (0.0), - 'p/100=%.0f' % (0.0), - '(%d/%d)' % (0, 0), + 'NA', + 'p=NA', + 'p/100=NA', + '(0/0)', _('profit/100hands') ) @@ -246,10 +246,10 @@ def bbper100(stat_dict, player): except: log.info("exception calcing bb/100: "+str(stat_dict[player])) return (stat, - '%.0f' % (0), - 'bb100=%.0f' % (0), - 'bb100=%.0f' % (0), - '(%f)' % (0), + 'NA', + 'bb100=NA', + 'bb100=NA', + '(--)', _('big blinds/100 hands') ) @@ -268,10 +268,10 @@ def BBper100(stat_dict, player): except: log.info(_("exception calcing BB/100: ")+str(stat_dict[player])) return (stat, - '%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - '(%f)' % (0.0), + 'NA', + 'BB100=NA', + 'BB100=NA', + '(--)', _('Big Bets/100 hands') ) @@ -290,13 +290,11 @@ def saw_f(stat_dict, player): ) except: stat = 0.0 - num = 0 - den = 0 return (stat, - '%3.1f' % (stat), - 'sf=%3.1f%%' % (stat), - 'saw_f=%3.1f%%' % (stat), - '(%d/%d)' % (num, den), + 'NA', + 'sf=NA', + 'saw_f=NA', + '(0/0)', _('Flop Seen %') ) @@ -323,6 +321,7 @@ def n(stat_dict, player): _('number hands seen') ) except: + # Number of hands shouldn't ever be "NA"; zeroes are better here return (0, '%d' % (0), 'n=%d' % (0), @@ -345,10 +344,10 @@ def fold_f(stat_dict, player): ) except: return (stat, - '%3.1f' % (0), - 'ff=%3.1f%%' % (0), - 'fold_f=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff=NA', + 'fold_f=NA', + '(0/0)', _('folded flop/4th') ) @@ -440,10 +439,10 @@ def three_B(stat_dict, player): _('% 3/4 Bet preflop/3rd')) except: return (stat, - '%3.1f' % (0), - '3B=%3.1f%%' % (0), - '3B_pf=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + '3B=NA', + '3B_pf=NA', + '(0/0)', _('% 3/4 Bet preflop/3rd')) def WMsF(stat_dict, player): @@ -459,10 +458,10 @@ def WMsF(stat_dict, player): _('% won$/saw flop/4th')) except: return (stat, - '%3.1f' % (0), - 'wf=%3.1f%%' % (0), - 'w_w_f=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'wf=NA', + 'w_w_f=NA', + '(0/0)', _('% won$/saw flop/4th')) def a_freq1(stat_dict, player): @@ -478,10 +477,10 @@ def a_freq1(stat_dict, player): _('Aggression Freq flop/4th')) except: return (stat, - '%3.1f' % (0), - 'a1=%3.1f%%' % (0), - 'a_fq_1=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a1=NA', + 'a_fq_1=NA', + '(0/0)', _('Aggression Freq flop/4th')) def a_freq2(stat_dict, player): @@ -497,10 +496,10 @@ def a_freq2(stat_dict, player): _('Aggression Freq turn/5th')) except: return (stat, - '%3.1f' % (0), - 'a2=%3.1f%%' % (0), - 'a_fq_2=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a2=NA', + 'a_fq_2=NA', + '(0/0)', _('Aggression Freq turn/5th')) def a_freq3(stat_dict, player): @@ -516,10 +515,10 @@ def a_freq3(stat_dict, player): _('Aggression Freq river/6th')) except: return (stat, - '%3.1f' % (0), - 'a3=%3.1f%%' % (0), - 'a_fq_3=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a3=NA', + 'a_fq_3=NA', + '(0/0)', _('Aggression Freq river/6th')) def a_freq4(stat_dict, player): @@ -535,10 +534,10 @@ def a_freq4(stat_dict, player): _('Aggression Freq 7th')) except: return (stat, - '%3.1f' % (0), - 'a4=%3.1f%%' % (0), - 'a_fq_4=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a4=NA', + 'a_fq_4=NA', + '(0/0)', _('Aggression Freq 7th')) def a_freq_123(stat_dict, player): @@ -561,10 +560,10 @@ def a_freq_123(stat_dict, player): _('Post-Flop Aggression Freq')) except: return (stat, - '%2.0f' % (0), - 'a3=%2.0f%%' % (0), - 'a_fq_3=%2.0f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'a3=NA', + 'a_fq_3=NA', + '(0/0)', _('Post-Flop Aggression Freq')) def agg_freq(stat_dict, player): @@ -589,10 +588,10 @@ def agg_freq(stat_dict, player): _('Aggression Freq')) except: return (stat, - '%2.1f' % (0), - 'af=%3.1f%%' % (0), - 'agg_f=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'af=NA', + 'agg_f=NA', + '(0/0)', _('Aggression Freq')) def agg_fact(stat_dict, player): @@ -615,10 +614,10 @@ def agg_fact(stat_dict, player): _('Aggression Factor')) except: return (stat, - '%2.2f' % (0) , - 'afa=%2.2f' % (0) , - 'agg_fa=%2.2f' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'afa=NA', + 'agg_fa=NA', + '(0/0)', _('Aggression Factor')) def cbet(stat_dict, player): @@ -639,10 +638,10 @@ def cbet(stat_dict, player): _('% continuation bet ')) except: return (stat, - '%3.1f' % (0), - 'cbet=%3.1f%%' % (0), - 'cbet=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cbet=NA', + 'cbet=NA', + '(0/0)', _('% continuation bet ')) def cb1(stat_dict, player): @@ -658,10 +657,10 @@ def cb1(stat_dict, player): _('% continuation bet flop/4th')) except: return (stat, - '%3.1f' % (0), - 'cb1=%3.1f%%' % (0), - 'cb_1=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb1=NA', + 'cb_1=NA', + '(0/0)', _('% continuation bet flop/4th')) def cb2(stat_dict, player): @@ -677,10 +676,10 @@ def cb2(stat_dict, player): _('% continuation bet turn/5th')) except: return (stat, - '%3.1f' % (0), - 'cb2=%3.1f%%' % (0), - 'cb_2=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb2=NA', + 'cb_2=NA', + '(0/0)', _('% continuation bet turn/5th')) def cb3(stat_dict, player): @@ -696,10 +695,10 @@ def cb3(stat_dict, player): _('% continuation bet river/6th')) except: return (stat, - '%3.1f' % (0), - 'cb3=%3.1f%%' % (0), - 'cb_3=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb3=NA', + 'cb_3=NA', + '(0/0)', _('% continuation bet river/6th')) def cb4(stat_dict, player): @@ -715,10 +714,10 @@ def cb4(stat_dict, player): _('% continuation bet 7th')) except: return (stat, - '%3.1f' % (0), - 'cb4=%3.1f%%' % (0), - 'cb_4=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'cb4=NA', + 'cb_4=NA', + '(0/0)', _('% continuation bet 7th')) def ffreq1(stat_dict, player): @@ -753,10 +752,10 @@ def ffreq2(stat_dict, player): _('% fold frequency turn/5th')) except: return (stat, - '%3.1f' % (0), - 'ff2=%3.1f%%' % (0), - 'ff_2=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff2=NA', + 'ff_2=NA', + '(0/0)', _('% fold frequency turn/5th')) def ffreq3(stat_dict, player): @@ -772,10 +771,10 @@ def ffreq3(stat_dict, player): _('% fold frequency river/6th')) except: return (stat, - '%3.1f' % (0), - 'ff3=%3.1f%%' % (0), - 'ff_3=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff3=NA', + 'ff_3=NA', + '(0/0)', _('% fold frequency river/6th')) def ffreq4(stat_dict, player): @@ -791,10 +790,10 @@ def ffreq4(stat_dict, player): _('% fold frequency 7th')) except: return (stat, - '%3.1f' % (0), - 'ff4=%3.1f%%' % (0), - 'ff_4=%3.1f%%' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'ff4=NA', + 'ff_4=NA', + '(0/0)', _('% fold frequency 7th')) if __name__== "__main__": From cf1d8fb5e8ad73e594a4ba306b2964aebdf40a3a Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Sun, 22 Aug 2010 14:12:29 +0300 Subject: [PATCH 328/641] Add comment on decimal place override --- pyfpdb/Stats.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index cfe82f0a..285a45ea 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -93,6 +93,11 @@ def do_stat(stat_dict, player = 24, stat = 'vpip'): result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) # If decimal places have been defined, override result[1] + # NOTE: decimal place override ALWAYS assumes the raw result is a + # fraction (x/100); manual decimal places really only make sense for + # percentage values. Also, profit/100 hands (bb/BB) already default + # to three decimal places anyhow, so they are unlikely override + # candidates. if match: base = stat[0:-2] places = int(stat[-1:]) From 3990b40e3db7023a6c1f027ae19fd527165de343 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 20:35:16 +0200 Subject: [PATCH 329/641] Some string changes, mostly consistency to make translation easier --- pyfpdb/Filters.py | 6 +++--- pyfpdb/GuiBulkImport.py | 2 +- pyfpdb/GuiDatabase.py | 12 +++++++----- pyfpdb/fpdb.pyw | 5 +++-- pyfpdb/fpdb_import.py | 8 ++++---- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/pyfpdb/Filters.py b/pyfpdb/Filters.py index 4bbc6057..136c0ab6 100644 --- a/pyfpdb/Filters.py +++ b/pyfpdb/Filters.py @@ -63,7 +63,7 @@ class Filters(threading.Thread): ,'seatsbetween':_('Between:'), 'seatsand':_('And:'), 'seatsshow':_('Show Number of _Players') ,'playerstitle':_('Hero:'), 'sitestitle':_('Sites:'), 'gamestitle':_('Games:') ,'limitstitle':_('Limits:'), 'seatstitle':_('Number of Players:') - ,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats:') + ,'groupstitle':_('Grouping:'), 'posnshow':_('Show Position Stats') ,'datestitle':_('Date:') ,'groupsall':_('All Players') ,'limitsFL':'FL', 'limitsNL':'NL', 'limitsPL':'PL', 'ring':_('Ring'), 'tour':_('Tourney') @@ -891,7 +891,7 @@ class Filters(threading.Thread): hbox = gtk.HBox() vbox1.pack_start(hbox, False, True, 0) - lbl_start = gtk.Label('From:') + lbl_start = gtk.Label(_('From:')) btn_start = gtk.Button() btn_start.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON)) @@ -905,7 +905,7 @@ class Filters(threading.Thread): hbox = gtk.HBox() vbox1.pack_start(hbox, False, True, 0) - lbl_end = gtk.Label(' To:') + lbl_end = gtk.Label(_('To:')) btn_end = gtk.Button() btn_end.set_image(gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON)) btn_end.connect('clicked', self.__calendar_dialog, self.end_date) diff --git a/pyfpdb/GuiBulkImport.py b/pyfpdb/GuiBulkImport.py index 943a81fd..a90f566c 100755 --- a/pyfpdb/GuiBulkImport.py +++ b/pyfpdb/GuiBulkImport.py @@ -136,7 +136,7 @@ class GuiBulkImport(): #self.settings['global_lock'].release() self.settings['global_lock'].release() else: - print _("bulk-import aborted - global lock not available") + print _("bulk import aborted - global lock not available") def get_vbox(self): """returns the vbox of this thread""" diff --git a/pyfpdb/GuiDatabase.py b/pyfpdb/GuiDatabase.py index 599f0a7e..e85e3057 100755 --- a/pyfpdb/GuiDatabase.py +++ b/pyfpdb/GuiDatabase.py @@ -300,7 +300,7 @@ class GuiDatabase: self.dia.show() except: err = traceback.extract_tb(sys.exc_info()[2])[-1] - print _('loaddbs error: ')+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' \ + print _('loadDbs error: ')+str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' \ + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) def sortCols(self, col, n): @@ -368,7 +368,7 @@ class GuiDatabase: try: # is creating empty db for sqlite ... mod db.py further? # add noDbTables flag to db.py? - log.debug(_("loaddbs: trying to connect to: %s/%s, %s, %s/%s") % (str(dbms_num),dbms,name,user,passwd)) + log.debug(_("testDB: trying to connect to: %s/%s, %s, %s/%s") % (str(dbms_num),dbms,name,user,passwd)) db.connect(backend=dbms_num, host=host, database=name, user=user, password=passwd, create=False) if db.connected: log.debug(_(" connected ok")) @@ -384,14 +384,16 @@ class GuiDatabase: status = "failed" icon = gtk.STOCK_CANCEL except Exceptions.FpdbMySQLNoDatabase: - err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started") + err_msg = _("MySQL client reports: 2002 or 2003 error. Unable to connect - ") \ + + _("Please check that the MySQL service has been started") status = "failed" icon = gtk.STOCK_CANCEL except Exceptions.FpdbPostgresqlAccessDenied: - err_msg = _("Postgres Server reports: Access denied. Are your permissions set correctly?") + err_msg = _("PostgreSQL Server reports: Access denied. Are your permissions set correctly?") status = "failed" except Exceptions.FpdbPostgresqlNoDatabase: - err_msg = _("Postgres client reports: Unable to connect - Please check that the Postgres service has been started") + err_msg = _("PostgreSQL client reports: Unable to connect - ") \ + + _("Please check that the PostgreSQL service has been started") status = "failed" icon = gtk.STOCK_CANCEL except: diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index d6cf4015..0cfe49ed 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -544,8 +544,9 @@ class fpdb: #lock_released = False 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 deleting and recreating tables")) - diastring = _("Please confirm that you want to (re-)create the tables. If there already are tables in the database ") \ - +self.db.database+" on "+self.db.host+_(" they will be deleted and you will have to re-import your histories.\nThis may take a while.") + diastring = _("Please confirm that you want to (re-)create the tables.") \ + + (_(" If there already are tables in the database %s on %s they will be deleted and you will have to re-import your histories.\n") % (self.db.database, self.db.host)) \ + + _("This may take a while.") dia_confirm.format_secondary_text(diastring)#todo: make above string with bold for db, host and deleted # disable windowclose, do not want the the underlying processing interrupted mid-process dia_confirm.set_deletable(False) diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index 8ff2ba86..39550a17 100755 --- a/pyfpdb/fpdb_import.py +++ b/pyfpdb/fpdb_import.py @@ -224,7 +224,7 @@ class Importer: #print " adding file ", file self.addImportFile(os.path.join(dir, file), site, filter) else: - log.warning(_("Attempted to add non-directory: '%s' as an import directory") % str(dir)) + log.warning(_("Attempted to add non-directory '%s' as an import directory") % str(dir)) def runImport(self): """"Run full import on self.filelist. This is called from GuiBulkImport.py""" @@ -310,7 +310,7 @@ class Importer: toterrors += errors for i in xrange( self.settings['threads'] ): - print _("sending finish msg qlen ="), q.qsize() + print _("sending finish message queue length ="), q.qsize() db.send_finish_msg(q) return (totstored, totdups, totpartial, toterrors) @@ -436,9 +436,9 @@ class Importer: # Load filter, process file, pass returned filename to import_fpdb_file if self.settings['threads'] > 0 and self.writeq is not None: - log.info(_("Converting ") + file + " (" + str(q.qsize()) + ")") + log.info((_("Converting %s") % file) + " (" + str(q.qsize()) + ")") else: - log.info(_("Converting ") + 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) From f6d5d2f9fcd8fc9894299e903bd5f13a3b9926a4 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 20:35:33 +0200 Subject: [PATCH 330/641] fpdb.pyw: remove unneeded unused method --- pyfpdb/fpdb.pyw | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index 0cfe49ed..94beac23 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -756,24 +756,6 @@ class fpdb: def dia_save_profile(self, widget, data=None): self.warning_box(_("Unimplemented: Save Profile (try saving a HUD layout, that should do it)")) - def diaSetupWizard(self, path): - diaSetupWizard = gtk.Dialog(title=_("Fatal Error - Config File Missing"), parent=None, flags=0, buttons=(gtk.STOCK_QUIT,gtk.RESPONSE_OK)) - - label = gtk.Label(_("Please copy the config file from the docs folder to:")) - diaSetupWizard.vbox.add(label) - label.show() - - label = gtk.Label(path) - diaSetupWizard.vbox.add(label) - label.show() - - label = gtk.Label(_("and edit it according to the install documentation at http://fpdb.sourceforge.net")) - diaSetupWizard.vbox.add(label) - label.show() - - response = diaSetupWizard.run() - sys.exit(1) - def get_menu(self, window): """returns the menu for this program""" fpdbmenu = """ From 8efa4d5a9cd6b7ff45ce57c255953ba9810d8587 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 20:46:01 +0200 Subject: [PATCH 331/641] slightly improve error message --- pyfpdb/Configuration.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index e9f1521c..31151358 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -132,8 +132,8 @@ def get_config(file_name, fallback = True): print msg logging.info(msg) except: - print _("Error copying .example file, cannot fall back. Exiting.\n") - sys.stderr.write(_("Error copying .example file, cannot fall back. Exiting.\n")) + print _("Error copying .example config file, cannot fall back. Exiting.\n") + sys.stderr.write(_("Error copying .example config file, cannot fall back. Exiting.\n")) sys.stderr.write( str(sys.exc_info()) ) sys.exit() elif fallback: From d53b0f7f2af3baebe0994832601943fc4caef20e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 20:46:21 +0200 Subject: [PATCH 332/641] l10n: german now 1/3 complete, update pot/po/mo files --- pyfpdb/locale/de/LC_MESSAGES/fpdb.mo | Bin 7463 -> 20424 bytes pyfpdb/locale/fpdb-de_DE.po | 1158 ++++++++++++++------------ pyfpdb/locale/fpdb-en_GB.pot | 851 ++++++++++--------- pyfpdb/locale/fpdb-hu_HU.po | 1003 ++++++++++++---------- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 64610 -> 59291 bytes pyfpdb/locale/localise.sh | 1 + 6 files changed, 1629 insertions(+), 1384 deletions(-) diff --git a/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo index eed07f34f8ceb70e4deaedb2e68839d2b3a7dc43..ae007611f0d5cdb7fd5668fce4dc3508fb32db9a 100644 GIT binary patch literal 20424 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 LZ0ng;(H>LP*e delta 1906 zcmYM!TWl0n9LMpqSc;aG!fsm%lyFKZl$J}ov>?kR7P<>{X;F&=i%6#Jba%AO!t5*! zD7H}nBcg!=MibPiA*4PT7tlTsFVRR8A`fZ;UgCq1Hxdbn`l5dS+aWgH`J6dBb1uLC zX)nJWIu{%HC0uk`@w1gr4WCn!6+##uQfJ zHI#+j#E2SEYSO(*Eu*6fYcY=VF@;U|5^lkZ7{+_ z1$Y%Df!nCDioq&y6`sQ_IFhAthlbQNJ#FHFXHh0HNJ{EWl%1YM%BVgH`Y)kG`6WuU zzam4aKT)2W%<3XI73F>&$^z<i7UBCX%-=4t4{32 z9axWfl!aVJIed45{!-#x%zYGPp2q`IfnJ#W<%>f>$BTg`@U6hH!1IBh1b&TDy6^EA z-a;wWLAD*mcQA$Dq5PGsW&85|V<<_Cj&NN~<21J7wt8j-WwUCA*cOgoQppqzv^!;va=an5cQA^t;JQi4_Sj6!_V|=iQ{G5r2e@7Xxh@7M( z)hH9zA>~v{uo%}P2U^8Z27DyY3HnD-4%hLZ{|%IJK0uA*DDU6E64}~K8ZzD}hN87s`R=mC=p&oav+!{(dFX7g%muQ^;X(_F1+ zh;&%K)n{dG-Q!!nll7hcthrd(T$`YONKcHqRBz0khN7cBi>kd&AV!)tjSr^<_OauV&oBTv_wQg2pMHZ4Izy zGgd!Zmh)WufZn~`v4?FhzkOjWRI%Om3NLiJgBfoR3(UB&e6*o06wdh>-MMFP#`Cr1 z4(QE~c9>&}Pnm|sCi7WiMOD_?&l+`Z?||jo1A3rO)3D6-rg%|HYbtp>3Xda%FRCPk);A*`7|= z=^6t^Dk4Cm- z3h6D~y}|Z99`s3YP3L&XgpxD!j^+)iT7L|`nb5Li>!yXL2^)sam(r(;7_x4ZtZ N, 2010. msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-29 14:22+CEST\n" -"PO-Revision-Date: 2010-08-29 14:20+0200\n" +"POT-Creation-Date: 2010-08-29 20:42+CEST\n" +"PO-Revision-Date: 2010-08-29 20:45+0200\n" "Last-Translator: Steffen Schaumburg \n" "Language-Team: Fpdb\n" "Language: de\n" @@ -36,19 +35,19 @@ msgstr "" msgid "No bringin found" msgstr "" -#: BetfairToFpdb.py:206 OnGameToFpdb.py:308 PokerStarsToFpdb.py:440 +#: BetfairToFpdb.py:206 OnGameToFpdb.py:339 PokerStarsToFpdb.py:441 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "" -#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 +#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:525 PokerStarsToFpdb.py:468 msgid "parse input hand history" msgstr "" -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:526 PokerStarsToFpdb.py:469 msgid "output translation to" msgstr "" -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:527 PokerStarsToFpdb.py:470 msgid "follow (tail -f) the input" msgstr "" @@ -58,104 +57,111 @@ msgstr "" #: Charset.py:45 Charset.py:60 Charset.py:75 Charset.py:86 Charset.py:94 msgid "Could not convert: \"%s\"\n" -msgstr "" +msgstr "Konnte \"%s\" nicht konvertieren.\n" #: Charset.py:48 Charset.py:63 Charset.py:78 msgid "Could not encode: \"%s\"\n" -msgstr "" +msgstr "Konnte \"%s% nicht kodieren.\n" -#: Configuration.py:113 Configuration.py:126 +#: Configuration.py:116 Configuration.py:131 msgid "Config file has been created at %s.\n" -msgstr "" +msgstr "Konfigurationsdatei %s wurde erstellt.\n" -#: Configuration.py:125 +#: Configuration.py:130 msgid "" "No %s found\n" " in %s\n" " or %s\n" msgstr "" -#: Configuration.py:131 Configuration.py:132 -msgid "Error copying .example file, cannot fall back. Exiting.\n" -msgstr "" +#: Configuration.py:135 Configuration.py:136 +msgid "Error copying .example config file, cannot fall back. Exiting.\n" +msgstr "Fehler beim Kopieren der .example Konfigurationsdatei, Fallback " +"fehlgeschlagen. Beende fpdb.\n" -#: Configuration.py:136 Configuration.py:137 +#: Configuration.py:140 Configuration.py:141 msgid "No %s found, cannot fall back. Exiting.\n" -msgstr "" +msgstr "Keine %s gefunden, Fallback nicht möglich. Beende fpdb.\n" -#: Configuration.py:167 +#: Configuration.py:173 msgid "Default logger initialised for " msgstr "" -#: Configuration.py:168 +#: Configuration.py:174 msgid "Default logger intialised for " msgstr "" -#: Configuration.py:179 Database.py:438 Database.py:439 +#: Configuration.py:185 Database.py:438 Database.py:439 msgid "Creating directory: '%s'" -msgstr "" +msgstr "Erstelle Verzeichnis \"%s\"" -#: Configuration.py:205 +#: Configuration.py:211 msgid "" "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're " "not on a Mac, please report this problem." msgstr "" -#: Configuration.py:303 +#: Configuration.py:309 msgid "Loading site" msgstr "" -#: Configuration.py:520 +#: Configuration.py:526 msgid "config.general: adding %s = %s" msgstr "" -#: Configuration.py:567 Configuration.py:568 +#: Configuration.py:573 Configuration.py:574 msgid "bad number in xalignment was ignored" msgstr "" -#: Configuration.py:616 +#: Configuration.py:622 msgid "missing config section raw_hands" msgstr "" -#: Configuration.py:622 +#: Configuration.py:628 msgid "Invalid config value for raw_hands.save, defaulting to \"error\"" msgstr "" -#: Configuration.py:629 +#: Configuration.py:635 msgid "Invalid config value for raw_hands.compression, defaulting to \"none\"" msgstr "" -#: Configuration.py:642 +#: Configuration.py:648 msgid "missing config section raw_tourneys" msgstr "" -#: Configuration.py:648 +#: Configuration.py:654 msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" msgstr "" -#: Configuration.py:655 +#: Configuration.py:661 msgid "" "Invalid config value for raw_tourneys.compression, defaulting to \"none\"" msgstr "" -#: Configuration.py:673 Configuration.py:674 +#: Configuration.py:679 Configuration.py:680 msgid "Configuration file %s not found. Using defaults." msgstr "" -#: Configuration.py:690 +#: Configuration.py:708 msgid "Reading configuration file %s" -msgstr "" +msgstr "Lese Konfigurationsdatei %s" -#: Configuration.py:691 +#: Configuration.py:709 msgid "" "\n" "Reading configuration file %s\n" msgstr "" +"\n" +"Lese Konfigurationsdatei %s\n" -#: Configuration.py:696 +#: Configuration.py:715 msgid "Error parsing %s. See error log file." msgstr "" +#: Configuration.py:831 +msgid "Error parsing example file %s. See error log file." +msgstr "" + #: Database.py:74 msgid "Not using sqlalchemy connection pool." msgstr "" @@ -449,211 +455,229 @@ msgstr "" msgid "get_stats took: %4.3f seconds" msgstr "" -#: Database.py:2373 Tables.py:448 +#: Database.py:2373 msgid "press enter to continue" msgstr "" #: Filters.py:62 msgid "All" -msgstr "" +msgstr "Alle" #: Filters.py:62 msgid "None" -msgstr "" +msgstr "Keine" #: Filters.py:62 msgid "Show _Limits" -msgstr "" +msgstr "_Limits anzeigen" #: Filters.py:63 msgid "Show Number of _Players" -msgstr "" +msgstr "_Spielerzahl anzeigen" #: Filters.py:63 TourneyFilters.py:60 msgid "And:" -msgstr "" +msgstr "Und:" #: Filters.py:63 TourneyFilters.py:60 msgid "Between:" -msgstr "" +msgstr "Zwischen:" #: Filters.py:64 msgid "Games:" -msgstr "" +msgstr "Spiele:" #: Filters.py:64 TourneyFilters.py:59 msgid "Hero:" -msgstr "" +msgstr "Held:" #: Filters.py:64 TourneyFilters.py:59 msgid "Sites:" -msgstr "" +msgstr "Seien:" #: Filters.py:65 msgid "Limits:" -msgstr "" +msgstr "Limits:" #: Filters.py:65 TourneyFilters.py:59 msgid "Number of Players:" -msgstr "" +msgstr "Spielerzahl:" #: Filters.py:66 msgid "Grouping:" -msgstr "" +msgstr "Gruppieren:" #: Filters.py:66 -msgid "Show Position Stats:" -msgstr "" +msgid "Show Position Stats" +msgstr "Positionen Anzeigen" #: Filters.py:67 TourneyFilters.py:60 msgid "Date:" -msgstr "" +msgstr "Datum:" #: Filters.py:68 msgid "All Players" -msgstr "" +msgstr "Alle Spieler" #: Filters.py:69 msgid "Ring" -msgstr "" +msgstr "Ring" #: Filters.py:69 msgid "Tourney" -msgstr "" +msgstr "Tourney" #: Filters.py:103 TourneyFilters.py:116 msgid "Either 0 or more than one site matched (%s) - EEK" -msgstr "" +msgstr "Entweder 0 oder mehr als eine Seite wurden (%s) erkannt" #: Filters.py:313 msgid "%s was toggled %s" -msgstr "" +msgstr "%s wurde auf %s gestellt" #: Filters.py:313 msgid "OFF" -msgstr "" +msgstr "AUS" #: Filters.py:313 msgid "ON" -msgstr "" +msgstr "AN" #: Filters.py:394 msgid "self.sites[%s] set to %s" -msgstr "" +msgstr "self.sites[%s] auf %s gesetzt" #: Filters.py:400 msgid "self.games[%s] set to %s" -msgstr "" +msgstr "self.games[%s] auf %s gesetzt" #: Filters.py:406 msgid "self.limit[%s] set to %s" -msgstr "" +msgstr "self.limit[%s] auf %s gesetzt" #: Filters.py:543 msgid "self.seats[%s] set to %s" -msgstr "" +msgstr "self.seats[%s] auf %s gesetzt" #: Filters.py:549 msgid "self.groups[%s] set to %s" -msgstr "" +msgstr "self.groups[%s] auf %s gesetzt" #: Filters.py:582 msgid "Min # Hands:" -msgstr "" +msgstr "Min. Hände:" #: Filters.py:648 msgid "INFO: No tourney types returned from database" -msgstr "" +msgstr "INFO: Keine Tourney-Arten (TourneyTypes) von der Datenbank erhalten" #: Filters.py:649 msgid "No tourney types returned from database" -msgstr "" +msgstr "Keine Tourney-Arten (TourneyTypes) von der Datenbank erhalten" #: Filters.py:675 Filters.py:764 msgid "INFO: No games returned from database" -msgstr "" +msgstr "INFO: Keine Spielarten (games) von der Datenbank erhalten" #: Filters.py:676 Filters.py:765 msgid "No games returned from database" -msgstr "" +msgstr "Keine Spielarten (games) von der Datenbank erhalten" + +#: Filters.py:894 +msgid "From:" +msgstr "Von:" + +#: Filters.py:908 +msgid "To:" +msgstr "Bis:" #: Filters.py:913 msgid " Clear Dates " -msgstr "" +msgstr " Datum zurücksetzen" -#: Filters.py:940 fpdb.pyw:722 +#: Filters.py:940 fpdb.pyw:723 msgid "Pick a date" -msgstr "" +msgstr "Wählen Sie ein Datum" -#: Filters.py:946 fpdb.pyw:728 +#: Filters.py:946 fpdb.pyw:729 msgid "Done" -msgstr "" +msgstr "Fertig" #: GuiAutoImport.py:85 msgid "Time between imports in seconds:" -msgstr "" +msgstr "Zeit zwischen Imports in Sekunden:" #: GuiAutoImport.py:116 GuiAutoImport.py:184 GuiAutoImport.py:261 -msgid " Start _Autoimport " -msgstr "" +msgid " Start _Auto Import " +msgstr " Starte _Autoimport " #: GuiAutoImport.py:135 -msgid "AutoImport Ready." -msgstr "" +msgid "Auto Import Ready." +msgstr "Autoimport bereit." #: GuiAutoImport.py:148 -msgid "Please choose the path that you want to auto import" -msgstr "" +msgid "Please choose the path that you want to Auto Import" +msgstr "Bitte wählen Sie den Pfad den Sie automatisch importieren möchten" #: GuiAutoImport.py:171 msgid " _Auto Import Running " -msgstr "" +msgstr " _Auto Import läuft " #: GuiAutoImport.py:182 -msgid " Stop _Autoimport " -msgstr "" +msgid " Stop _Auto Import " +msgstr " _Autoimport Anhalten " #: GuiAutoImport.py:207 msgid "" "\n" "Global lock taken ... Auto Import Started.\n" msgstr "" +"\n" +"Globaler Lock genommen ... Autoimport gestartet\n" #: GuiAutoImport.py:209 -msgid " _Stop Autoimport " -msgstr "" +msgid " _Stop Auto Import " +msgstr " Autoimport An_halten" #: GuiAutoImport.py:225 msgid "opening pipe to HUD" -msgstr "" +msgstr "öffne Pipe zum HUD" #: GuiAutoImport.py:237 msgid "" "\n" "*** GuiAutoImport Error opening pipe: " msgstr "" +"\n" +"*** GuiAutoImport Fehler beim Öffnen der Pipe: " #: GuiAutoImport.py:249 msgid "" "\n" -"auto-import aborted - global lock not available" +"Auto Import aborted - global lock not available" msgstr "" +"\n" +"Autoimport abgebrochen - globaler Lock nicht verfügbar" #: GuiAutoImport.py:254 msgid "" "\n" -"Stopping autoimport - global lock released." +"Stopping Auto Import - global lock released." msgstr "" +"\n" +"Autoimport wird angehalten - globaler Lock freigegeben" #: GuiAutoImport.py:256 msgid "" "\n" -" * Stop Autoimport: HUD already terminated" +" * Stop Auto Import: HUD already terminated" msgstr "" +"\n" +" * Autoimport anhalten: HUD ist bereits beendet" #: GuiAutoImport.py:283 msgid "Browse..." -msgstr "" +msgstr "Durchsuchen..." #: GuiAutoImport.py:326 GuiBulkImport.py:354 msgid "How often to print a one-line status report (0 (default) means never)" @@ -664,84 +688,88 @@ msgid "" "\n" "Global lock taken ..." msgstr "" +"\n" +"Globaler Lock genommen ..." #: GuiBulkImport.py:68 msgid "Importing..." -msgstr "" +msgstr "Importiere..." #: GuiBulkImport.py:117 msgid "" "GuiBulkImport.load done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: " "%d in %s seconds - %.0f/sec" msgstr "" +"GuiBulkImport.load ist fertig: Gespeichert: %d \tDupletten: %d \tTeilweise: " +"%d \tFehler: %d in %s Sekunden - %.0f/sek" #: GuiBulkImport.py:131 msgid "Import Complete" -msgstr "" +msgstr "Import fertig" #: GuiBulkImport.py:139 -msgid "bulk-import aborted - global lock not available" -msgstr "" +msgid "bulk import aborted - global lock not available" +msgstr "Massenimport abgebrochen - globaler Lock nicht verfügbar" #: GuiBulkImport.py:165 msgid "Print Start/Stop Info" -msgstr "" +msgstr "Start-/Stop-Infos ausgeben" #: GuiBulkImport.py:172 msgid "Hands/status print:" -msgstr "" +msgstr "Hände/Statusausgabe:" #: GuiBulkImport.py:189 msgid "Number of threads:" -msgstr "" +msgstr "Anzahl Threads:" #: GuiBulkImport.py:209 msgid "Fail on error" -msgstr "" +msgstr "Bei Fehler abbrechen" #: GuiBulkImport.py:214 msgid "Hands/file:" -msgstr "" +msgstr "Hände/Datei:" #: GuiBulkImport.py:229 msgid "Drop indexes:" -msgstr "" +msgstr "Indexe löschen:" #: GuiBulkImport.py:238 GuiBulkImport.py:288 msgid "auto" -msgstr "" +msgstr "auto" #: GuiBulkImport.py:239 GuiBulkImport.py:289 GuiBulkImport.py:398 msgid "don't drop" -msgstr "" +msgstr "Nein" #: GuiBulkImport.py:240 GuiBulkImport.py:290 msgid "drop" -msgstr "" +msgstr "Ja" #: GuiBulkImport.py:246 msgid "HUD Test mode" -msgstr "" +msgstr "HUD-Testmodus" #: GuiBulkImport.py:251 msgid "Site filter:" -msgstr "" +msgstr "Site-Filter:" #: GuiBulkImport.py:279 msgid "Drop HudCache:" -msgstr "" +msgstr "HudCache löschen:" -#: GuiBulkImport.py:297 fpdb.pyw:831 +#: GuiBulkImport.py:297 fpdb.pyw:814 msgid "_Bulk Import" -msgstr "" +msgstr "_Massenimport" #: GuiBulkImport.py:299 msgid "Import clicked" -msgstr "" +msgstr "Import geklickt" #: GuiBulkImport.py:317 msgid "Waiting..." -msgstr "" +msgstr "Warte..." #: GuiBulkImport.py:346 msgid "Input file in quiet mode" @@ -809,101 +837,164 @@ msgid "" "in %s seconds - %.0f/sec" msgstr "" -#: GuiDatabase.py:106 GuiLogView.py:96 -msgid "Refresh" -msgstr "" - -#: GuiDatabase.py:111 -msgid "Type" -msgstr "" - -#: GuiDatabase.py:112 -msgid "Name" -msgstr "" - -#: GuiDatabase.py:113 -msgid "Description" -msgstr "" - -#: GuiDatabase.py:114 GuiImapFetcher.py:119 -msgid "Username" -msgstr "" - -#: GuiDatabase.py:115 GuiImapFetcher.py:119 -msgid "Password" -msgstr "" - -#: GuiDatabase.py:116 -msgid "Host" -msgstr "" - #: GuiDatabase.py:117 -msgid "Default" -msgstr "" +msgid "_Add" +msgstr "_Hinzufügen" -#: GuiDatabase.py:118 +#: GuiDatabase.py:121 +msgid "_Refresh" +msgstr "_Aktualisieren" + +#: GuiDatabase.py:125 +msgid "Type" +msgstr "Typ" + +#: GuiDatabase.py:126 +msgid "Name" +msgstr "Name" + +#: GuiDatabase.py:127 +msgid "Description" +msgstr "Beschreibung" + +#: GuiDatabase.py:128 GuiDatabase.py:459 GuiImapFetcher.py:119 +msgid "Username" +msgstr "Benutzername" + +#: GuiDatabase.py:129 GuiDatabase.py:466 GuiImapFetcher.py:119 +msgid "Password" +msgstr "Passwort" + +#: GuiDatabase.py:130 +msgid "Host" +msgstr "Host" + +#: GuiDatabase.py:131 +msgid "Open" +msgstr "Geöffnet" + +#: GuiDatabase.py:132 msgid "Status" -msgstr "" +msgstr "Status" -#: GuiDatabase.py:251 +#: GuiDatabase.py:266 msgid "Testing database connections ... " +msgstr "Teste Datenbankverbindungen..." + +#: GuiDatabase.py:293 +msgid "finished." +msgstr "Fertig." + +#: GuiDatabase.py:303 +msgid "loadDbs error: " +msgstr "loadDbs Fehler:" + +#: GuiDatabase.py:324 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 +msgid "***sortCols error: " +msgstr "***sortCols Fehler: " + +#: GuiDatabase.py:326 +msgid "sortCols error: " +msgstr "sortCols Fehler: " + +#: GuiDatabase.py:371 +msgid "testDB: trying to connect to: %s/%s, %s, %s/%s" msgstr "" -#: GuiDatabase.py:281 -msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" -msgstr "" - -#: GuiDatabase.py:284 +#: GuiDatabase.py:374 msgid " connected ok" -msgstr "" +msgstr " Verbindung OK" -#: GuiDatabase.py:291 +#: GuiDatabase.py:381 msgid " not connected but no exception" -msgstr "" +msgstr " Nicht verbunden aber keine Exception" -#: GuiDatabase.py:293 fpdb.pyw:904 +#: GuiDatabase.py:383 fpdb.pyw:886 msgid "" "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" +"MySQL Server meldet: Zugriff verweigert. Sind Ihre Zugriffsrechte korrekt " +"gesetzt?" -#: GuiDatabase.py:297 +#: GuiDatabase.py:387 fpdb.pyw:888 +msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " +msgstr "" +"MySQL Client meldet Fehler Nr. 2002 oder 2003. Konnte nicht verbinden - " + +#: GuiDatabase.py:388 fpdb.pyw:889 +msgid "Please check that the MySQL service has been started" +msgstr "Bitte überprüfen Sie, dass der MySQL-Dienst gestartet ist" + +#: GuiDatabase.py:392 fpdb.pyw:891 msgid "" -"MySQL client reports: 2002 or 2003 error. Unable to connect - Please check " -"that the MySQL service has been started" +"PostgreSQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" -#: GuiDatabase.py:301 fpdb.pyw:909 -msgid "" -"Postgres Server reports: Access denied. Are your permissions set correctly?" +#: GuiDatabase.py:395 fpdb.pyw:893 +msgid "PostgreSQL client reports: Unable to connect - " +msgstr "PostgreSQL Client meldet Fehler: Konnte nicht verbinden - " + +#: GuiDatabase.py:396 fpdb.pyw:894 +msgid "Please check that the PostgreSQL service has been started" +msgstr "Bitte überprüfen Sie, dass der PostgreSQL-Dienst gestartet ist" + +#: GuiDatabase.py:406 +msgid "db connection to " msgstr "" -#: GuiDatabase.py:304 -msgid "" -"Postgres client reports: Unable to connect - Please check that the Postgres " -"service has been started" +#: GuiDatabase.py:434 +msgid "DB Type" msgstr "" -#: GuiDatabase.py:321 -msgid "finished." +#: GuiDatabase.py:444 +msgid "DB Name" msgstr "" -#: GuiDatabase.py:331 -msgid "loaddbs error: " +#: GuiDatabase.py:452 +msgid "DB Description" msgstr "" -#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 -msgid "***sortCols error: " +#: GuiDatabase.py:473 +msgid "Host Computer" msgstr "" -#: GuiDatabase.py:354 -msgid "sortCols error: " -msgstr "" +#: GuiDatabase.py:528 +msgid "Database created" +msgstr "Datenbank erstellt" -#: GuiDatabase.py:424 GuiLogView.py:213 +#: GuiDatabase.py:531 +msgid "Database creation failed" +msgstr "Datenbankerstellung fehlgeschlagen" + +#: GuiDatabase.py:550 +msgid "No Database Name given" +msgstr "Kein Datenbankname eingegeben" + +#: GuiDatabase.py:553 +msgid "No Database Description given" +msgstr "Keine Datenbankbeschreibung eingegeben" + +#: GuiDatabase.py:556 +msgid "No Username given" +msgstr "Kein Benutzername eingegeben" + +#: GuiDatabase.py:559 +msgid "No Password given" +msgstr "Kein Passwort eingegeben" + +#: GuiDatabase.py:562 +msgid "No Host given" +msgstr "Kein Host eingegeben" + +#: GuiDatabase.py:589 +msgid "Do you want to try again?" +msgstr "Wollen Sie es nochmal versuchen?" + +#: GuiDatabase.py:702 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "" -#: GuiDatabase.py:429 GuiLogView.py:218 +#: GuiDatabase.py:707 GuiLogView.py:218 msgid "Log Viewer" msgstr "" @@ -1047,13 +1138,17 @@ msgstr "" msgid "Log Messages" msgstr "" +#: GuiLogView.py:96 +msgid "Refresh" +msgstr "" + #: GuiPositionalStats.py:146 msgid "DEBUG: activesite set to %s" msgstr "" #: GuiPositionalStats.py:332 msgid "Positional Stats page displayed in %4.2f seconds" -msgstr "" +msgstr "Statistiken nach Position wurde in %4.2f Sekunden angezeigt" #: GuiPrefs.py:81 msgid "Setting" @@ -1174,7 +1269,7 @@ msgstr "" msgid "Note: error output is being diverted to:\n" msgstr "" -#: HUD_main.pyw:96 fpdb.pyw:1138 +#: HUD_main.pyw:96 fpdb.pyw:1120 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1242,358 +1337,358 @@ msgstr "" msgid "Using db name = %s\n" msgstr "" -#: Hand.py:150 +#: Hand.py:151 msgid "BB" msgstr "" -#: Hand.py:151 +#: Hand.py:152 msgid "SB" msgstr "" -#: Hand.py:152 +#: Hand.py:153 msgid "BUTTONPOS" msgstr "" -#: Hand.py:153 +#: Hand.py:154 msgid "HAND NO." msgstr "" -#: Hand.py:154 TourneySummary.py:134 +#: Hand.py:155 TourneySummary.py:134 msgid "SITE" msgstr "" -#: Hand.py:155 +#: Hand.py:156 msgid "TABLE NAME" msgstr "" -#: Hand.py:156 TourneySummary.py:144 +#: Hand.py:157 TourneySummary.py:144 msgid "HERO" msgstr "" -#: Hand.py:157 TourneySummary.py:145 +#: Hand.py:158 TourneySummary.py:145 msgid "MAXSEATS" msgstr "" -#: Hand.py:158 +#: Hand.py:159 msgid "LEVEL" msgstr "" -#: Hand.py:159 TourneySummary.py:150 +#: Hand.py:160 TourneySummary.py:150 msgid "MIXED" msgstr "" -#: Hand.py:160 +#: Hand.py:161 msgid "LASTBET" msgstr "" -#: Hand.py:161 +#: Hand.py:162 msgid "ACTION STREETS" msgstr "" -#: Hand.py:162 +#: Hand.py:163 msgid "STREETS" msgstr "" -#: Hand.py:163 +#: Hand.py:164 msgid "ALL STREETS" msgstr "" -#: Hand.py:164 +#: Hand.py:165 msgid "COMMUNITY STREETS" msgstr "" -#: Hand.py:165 +#: Hand.py:166 msgid "HOLE STREETS" msgstr "" -#: Hand.py:166 +#: Hand.py:167 msgid "COUNTED SEATS" msgstr "" -#: Hand.py:167 +#: Hand.py:168 msgid "DEALT" msgstr "" -#: Hand.py:168 +#: Hand.py:169 msgid "SHOWN" msgstr "" -#: Hand.py:169 +#: Hand.py:170 msgid "MUCKED" msgstr "" -#: Hand.py:170 +#: Hand.py:171 msgid "TOTAL POT" msgstr "" -#: Hand.py:171 +#: Hand.py:172 msgid "TOTAL COLLECTED" msgstr "" -#: Hand.py:172 +#: Hand.py:173 msgid "RAKE" msgstr "" -#: Hand.py:173 TourneySummary.py:135 +#: Hand.py:174 TourneySummary.py:135 msgid "START TIME" msgstr "" -#: Hand.py:174 +#: Hand.py:175 msgid "TOURNAMENT NO" msgstr "" -#: Hand.py:175 TourneySummary.py:140 +#: Hand.py:176 TourneySummary.py:140 msgid "TOURNEY ID" msgstr "" -#: Hand.py:176 TourneySummary.py:139 +#: Hand.py:177 TourneySummary.py:139 msgid "TOURNEY TYPE ID" msgstr "" -#: Hand.py:177 TourneySummary.py:141 +#: Hand.py:178 TourneySummary.py:141 msgid "BUYIN" msgstr "" -#: Hand.py:178 +#: Hand.py:179 msgid "BUYIN CURRENCY" msgstr "" -#: Hand.py:179 +#: Hand.py:180 msgid "BUYIN CHIPS" msgstr "" -#: Hand.py:180 TourneySummary.py:142 +#: Hand.py:181 TourneySummary.py:142 msgid "FEE" msgstr "" -#: Hand.py:181 +#: Hand.py:182 msgid "IS REBUY" msgstr "" -#: Hand.py:182 +#: Hand.py:183 msgid "IS ADDON" msgstr "" -#: Hand.py:183 +#: Hand.py:184 msgid "IS KO" msgstr "" -#: Hand.py:184 TourneySummary.py:166 +#: Hand.py:185 TourneySummary.py:166 msgid "KO BOUNTY" msgstr "" -#: Hand.py:185 +#: Hand.py:186 msgid "IS MATRIX" msgstr "" -#: Hand.py:186 +#: Hand.py:187 msgid "IS SHOOTOUT" msgstr "" -#: Hand.py:187 TourneySummary.py:167 +#: Hand.py:188 TourneySummary.py:167 msgid "TOURNEY COMMENT" msgstr "" -#: Hand.py:190 TourneySummary.py:179 +#: Hand.py:191 TourneySummary.py:179 msgid "PLAYERS" msgstr "" -#: Hand.py:191 +#: Hand.py:192 msgid "STACKS" msgstr "" -#: Hand.py:192 +#: Hand.py:193 msgid "POSTED" msgstr "" -#: Hand.py:193 +#: Hand.py:194 msgid "POT" msgstr "" -#: Hand.py:194 +#: Hand.py:195 msgid "SEATING" msgstr "" -#: Hand.py:195 +#: Hand.py:196 msgid "GAMETYPE" msgstr "" -#: Hand.py:196 +#: Hand.py:197 msgid "ACTION" msgstr "" -#: Hand.py:197 +#: Hand.py:198 msgid "COLLECTEES" msgstr "" -#: Hand.py:198 +#: Hand.py:199 msgid "BETS" msgstr "" -#: Hand.py:199 +#: Hand.py:200 msgid "BOARD" msgstr "" -#: Hand.py:200 +#: Hand.py:201 msgid "DISCARDS" msgstr "" -#: Hand.py:201 +#: Hand.py:202 msgid "HOLECARDS" msgstr "" -#: Hand.py:202 +#: Hand.py:203 msgid "TOURNEYS PLAYER IDS" msgstr "" -#: Hand.py:225 Hand.py:1242 +#: Hand.py:226 Hand.py:1243 msgid "[ERROR] Tried to add holecards for unknown player: %s" msgstr "" -#: Hand.py:278 +#: Hand.py:279 msgid "Hand.insert(): hid #: %s is a duplicate" msgstr "" -#: Hand.py:317 -msgid "markstreets didn't match - Assuming hand cancelled" +#: Hand.py:318 +msgid "markstreets didn't match - Assuming hand %s was cancelled" msgstr "" -#: Hand.py:319 +#: Hand.py:320 msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" msgstr "" -#: Hand.py:323 +#: Hand.py:324 msgid "DEBUG: checkPlayerExists %s fail on hand number %s" msgstr "" -#: Hand.py:324 +#: Hand.py:325 msgid "checkPlayerExists: '%s fail on hand number %s" msgstr "" -#: Hand.py:405 +#: Hand.py:406 msgid "%s %s calls %s" msgstr "" -#: Hand.py:475 +#: Hand.py:476 msgid "%s %s raise %s" msgstr "" -#: Hand.py:486 +#: Hand.py:487 msgid "%s %s bets %s" msgstr "" -#: Hand.py:505 +#: Hand.py:506 msgid "%s %s folds" msgstr "" -#: Hand.py:514 +#: Hand.py:515 msgid "%s %s checks" msgstr "" -#: Hand.py:534 +#: Hand.py:535 msgid "addShownCards %s hole=%s all=%s" msgstr "" -#: Hand.py:645 +#: Hand.py:646 msgid "" "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, " "expecting datetime.date object, received:" msgstr "" -#: Hand.py:646 +#: Hand.py:647 msgid "" "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" -#: Hand.py:647 +#: Hand.py:648 msgid "*** Game String:" msgstr "" -#: Hand.py:701 +#: Hand.py:702 msgid "" "*** Parse error reading blinds (check compilePlayerRegexs as a likely " "culprit)" msgstr "" -#: Hand.py:728 +#: Hand.py:729 msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" msgstr "" -#: Hand.py:730 +#: Hand.py:731 msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" msgstr "" -#: Hand.py:1111 +#: Hand.py:1112 msgid "*** DEALING HANDS ***" msgstr "" -#: Hand.py:1116 +#: Hand.py:1117 msgid "Dealt to %s: [%s]" msgstr "" -#: Hand.py:1121 +#: Hand.py:1122 msgid "*** FIRST DRAW ***" msgstr "" -#: Hand.py:1131 +#: Hand.py:1132 msgid "*** SECOND DRAW ***" msgstr "" -#: Hand.py:1141 +#: Hand.py:1142 msgid "*** THIRD DRAW ***" msgstr "" -#: Hand.py:1151 Hand.py:1369 +#: Hand.py:1152 Hand.py:1370 msgid "*** SHOW DOWN ***" msgstr "" -#: Hand.py:1166 Hand.py:1384 +#: Hand.py:1167 Hand.py:1385 msgid "*** SUMMARY ***" msgstr "" -#: Hand.py:1251 +#: Hand.py:1252 msgid "%s %s completes %s" msgstr "" -#: Hand.py:1269 +#: Hand.py:1270 msgid "Bringin: %s, %s" msgstr "" -#: Hand.py:1309 +#: Hand.py:1310 msgid "*** 3RD STREET ***" msgstr "" -#: Hand.py:1323 +#: Hand.py:1324 msgid "*** 4TH STREET ***" msgstr "" -#: Hand.py:1335 +#: Hand.py:1336 msgid "*** 5TH STREET ***" msgstr "" -#: Hand.py:1347 +#: Hand.py:1348 msgid "*** 6TH STREET ***" msgstr "" -#: Hand.py:1357 +#: Hand.py:1358 msgid "*** RIVER ***" msgstr "" -#: Hand.py:1449 +#: Hand.py:1450 msgid "" "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should " "be impossible for anyone who is not a hero" msgstr "" -#: Hand.py:1450 +#: Hand.py:1451 msgid "join_holcards: holecards(%s): %s" msgstr "" -#: Hand.py:1533 +#: Hand.py:1534 msgid "DEBUG: call Pot.end() before printing pot total" msgstr "" -#: Hand.py:1535 +#: Hand.py:1536 msgid "FpdbError in printing Hand object" msgstr "" @@ -1716,139 +1811,129 @@ msgid "" " on %s." msgstr "" -#: Hud.py:149 +#: Hud.py:148 msgid "Kill This HUD" msgstr "" -#: Hud.py:154 +#: Hud.py:153 msgid "Save HUD Layout" msgstr "" -#: Hud.py:158 +#: Hud.py:157 msgid "Reposition StatWindows" msgstr "" -#: Hud.py:162 +#: Hud.py:161 msgid "Show Player Stats" msgstr "" -#: Hud.py:167 Hud.py:236 +#: Hud.py:166 Hud.py:235 msgid "For This Blind Level Only" msgstr "" -#: Hud.py:172 Hud.py:241 +#: Hud.py:171 Hud.py:240 msgid "For Multiple Blind Levels:" msgstr "" -#: Hud.py:175 Hud.py:244 +#: Hud.py:174 Hud.py:243 msgid " 0.5 to 2.0 x Current Blinds" msgstr "" -#: Hud.py:180 Hud.py:249 +#: Hud.py:179 Hud.py:248 msgid " 0.33 to 3.0 x Current Blinds" msgstr "" -#: Hud.py:185 Hud.py:254 +#: Hud.py:184 Hud.py:253 msgid " 0.1 to 10 x Current Blinds" msgstr "" -#: Hud.py:190 Hud.py:259 +#: Hud.py:189 Hud.py:258 msgid " All Levels" msgstr "" -#: Hud.py:195 Hud.py:264 +#: Hud.py:194 Hud.py:263 msgid "For #Seats:" msgstr "" -#: Hud.py:198 Hud.py:267 +#: Hud.py:197 Hud.py:266 msgid " Any Number" msgstr "" -#: Hud.py:203 Hud.py:272 +#: Hud.py:202 Hud.py:271 msgid " Custom" msgstr "" -#: Hud.py:208 Hud.py:277 +#: Hud.py:207 Hud.py:276 msgid " Exact" msgstr "" -#: Hud.py:213 Hud.py:282 +#: Hud.py:212 Hud.py:281 msgid "Since:" msgstr "" -#: Hud.py:216 Hud.py:285 +#: Hud.py:215 Hud.py:284 msgid " All Time" msgstr "" -#: Hud.py:221 Hud.py:290 +#: Hud.py:220 Hud.py:289 msgid " Session" msgstr "" -#: Hud.py:226 Hud.py:295 +#: Hud.py:225 Hud.py:294 msgid " %s Days" msgstr "" -#: Hud.py:231 +#: Hud.py:230 msgid "Show Opponent Stats" msgstr "" -#: Hud.py:353 +#: Hud.py:352 msgid "Debug StatWindows" msgstr "" -#: Hud.py:357 +#: Hud.py:356 msgid "Set max seats" msgstr "" -#: Hud.py:543 +#: Hud.py:542 msgid "Updating config file" msgstr "" -#: Hud.py:552 +#: Hud.py:551 msgid "No layout found for %d-max games for site %s\n" msgstr "" -#: Hud.py:566 +#: Hud.py:565 msgid "" "exception in Hud.adj_seats\n" "\n" msgstr "" -#: Hud.py:567 +#: Hud.py:566 msgid "error is %s" msgstr "" -#: Hud.py:574 +#: Hud.py:573 msgid "Error finding actual seat.\n" msgstr "" -#: Hud.py:590 +#: Hud.py:589 msgid "" "------------------------------------------------------------\n" "Creating hud from hand %s\n" msgstr "" -#: Hud.py:639 +#: Hud.py:638 msgid "" "KeyError at the start of the for loop in update in hud_main. How this can " "possibly happen is totally beyond my comprehension. Your HUD may be about to " "get really weird. -Eric" msgstr "" -#: Hud.py:640 +#: Hud.py:639 msgid "(btw, the key was %s and statd is %s" msgstr "" -#: Hud.py:947 -msgid "" -"Fake main window, blah blah, blah\n" -"blah, blah" -msgstr "" - -#: Hud.py:955 -msgid "Table not found." -msgstr "" - #: ImapFetcher.py:54 msgid "response to logging in:" msgstr "" @@ -1861,36 +1946,36 @@ msgstr "" msgid "No Name" msgstr "" -#: OnGameToFpdb.py:153 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 +#: OnGameToFpdb.py:178 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "" -#: OnGameToFpdb.py:154 PkrToFpdb.py:145 PkrToFpdb.py:173 +#: OnGameToFpdb.py:179 OnGameToFpdb.py:193 PkrToFpdb.py:145 PkrToFpdb.py:173 #: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "" -#: OnGameToFpdb.py:155 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 +#: OnGameToFpdb.py:180 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "" -#: OnGameToFpdb.py:235 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +#: OnGameToFpdb.py:192 +msgid "determineGameType: limit not found in self.limits(%s). hand: '%s'" +msgstr "" + +#: OnGameToFpdb.py:194 +msgid "limit not found in self.limits(%s). hand: '%s'" +msgstr "" + +#: OnGameToFpdb.py:268 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:321 msgid "readButton: not found" msgstr "" -#: OnGameToFpdb.py:250 -msgid "readBlinds starting" +#: OnGameToFpdb.py:288 +msgid "readBlinds in noSB exception - no SB created" msgstr "" -#: OnGameToFpdb.py:254 -msgid "re_postSB failed, hand=" -msgstr "" - -#: OnGameToFpdb.py:257 -msgid "readBlinds in noSB exception" -msgstr "" - -#: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 +#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 msgid "reading antes" msgstr "" @@ -1975,187 +2060,167 @@ msgstr "" msgid "in not result starttime" msgstr "" -#: PokerStarsToFpdb.py:273 +#: PokerStarsToFpdb.py:274 msgid "failed to detect currency" msgstr "" -#: Stats.py:103 -msgid "exception getting stat %s for player %s %s" -msgstr "" - -#: Stats.py:104 -msgid "Stats.do_stat result = %s" -msgstr "" - -#: Stats.py:113 -msgid "error: %s" -msgstr "" - -#: Stats.py:132 Stats.py:133 +#: Stats.py:122 Stats.py:123 msgid "Total Profit" msgstr "" -#: Stats.py:154 Stats.py:161 +#: Stats.py:144 Stats.py:151 msgid "Voluntarily Put In Pot Pre-Flop%" msgstr "" -#: Stats.py:174 Stats.py:182 +#: Stats.py:164 Stats.py:172 msgid "Pre-Flop Raise %" msgstr "" -#: Stats.py:195 Stats.py:203 +#: Stats.py:185 Stats.py:193 msgid "% went to showdown" msgstr "" -#: Stats.py:216 Stats.py:224 +#: Stats.py:206 Stats.py:214 msgid "% won money at showdown" msgstr "" -#: Stats.py:237 Stats.py:246 +#: Stats.py:227 Stats.py:236 msgid "profit/100hands" msgstr "" -#: Stats.py:240 +#: Stats.py:230 msgid "exception calcing p/100: 100 * %d / %d" msgstr "" -#: Stats.py:259 Stats.py:268 +#: Stats.py:249 Stats.py:258 msgid "big blinds/100 hands" msgstr "" -#: Stats.py:281 Stats.py:290 +#: Stats.py:271 Stats.py:280 msgid "Big Bets/100 hands" msgstr "" -#: Stats.py:284 +#: Stats.py:274 msgid "exception calcing BB/100: " msgstr "" -#: Stats.py:304 Stats.py:315 +#: Stats.py:294 Stats.py:303 msgid "Flop Seen %" msgstr "" -#: Stats.py:338 Stats.py:346 +#: Stats.py:326 Stats.py:335 msgid "number hands seen" msgstr "" -#: Stats.py:359 Stats.py:367 +#: Stats.py:348 Stats.py:356 msgid "folded flop/4th" msgstr "" -#: Stats.py:380 +#: Stats.py:369 msgid "% steal attempted" msgstr "" -#: Stats.py:395 Stats.py:402 +#: Stats.py:384 Stats.py:391 msgid "% folded SB to steal" msgstr "" -#: Stats.py:414 Stats.py:421 +#: Stats.py:403 Stats.py:410 msgid "% folded BB to steal" msgstr "" -#: Stats.py:436 Stats.py:443 +#: Stats.py:425 Stats.py:432 msgid "% folded blind to steal" msgstr "" -#: Stats.py:455 Stats.py:462 +#: Stats.py:444 Stats.py:451 msgid "% 3/4 Bet preflop/3rd" msgstr "" -#: Stats.py:474 Stats.py:481 +#: Stats.py:463 Stats.py:470 msgid "% won$/saw flop/4th" msgstr "" -#: Stats.py:493 Stats.py:500 +#: Stats.py:482 Stats.py:489 msgid "Aggression Freq flop/4th" msgstr "" -#: Stats.py:512 Stats.py:519 +#: Stats.py:501 Stats.py:508 msgid "Aggression Freq turn/5th" msgstr "" -#: Stats.py:531 Stats.py:538 +#: Stats.py:520 Stats.py:527 msgid "Aggression Freq river/6th" msgstr "" -#: Stats.py:550 Stats.py:557 +#: Stats.py:539 Stats.py:546 msgid "Aggression Freq 7th" msgstr "" -#: Stats.py:576 Stats.py:583 +#: Stats.py:565 Stats.py:572 msgid "Post-Flop Aggression Freq" msgstr "" -#: Stats.py:604 Stats.py:611 +#: Stats.py:593 Stats.py:600 msgid "Aggression Freq" msgstr "" -#: Stats.py:630 Stats.py:637 +#: Stats.py:619 Stats.py:626 msgid "Aggression Factor" msgstr "" -#: Stats.py:654 Stats.py:661 +#: Stats.py:643 Stats.py:650 msgid "% continuation bet " msgstr "" -#: Stats.py:673 Stats.py:680 +#: Stats.py:662 Stats.py:669 msgid "% continuation bet flop/4th" msgstr "" -#: Stats.py:692 Stats.py:699 +#: Stats.py:681 Stats.py:688 msgid "% continuation bet turn/5th" msgstr "" -#: Stats.py:711 Stats.py:718 +#: Stats.py:700 Stats.py:707 msgid "% continuation bet river/6th" msgstr "" -#: Stats.py:730 Stats.py:737 +#: Stats.py:719 Stats.py:726 msgid "% continuation bet 7th" msgstr "" -#: Stats.py:749 Stats.py:756 +#: Stats.py:738 Stats.py:745 msgid "% fold frequency flop/4th" msgstr "" -#: Stats.py:768 Stats.py:775 +#: Stats.py:757 Stats.py:764 msgid "% fold frequency turn/5th" msgstr "" -#: Stats.py:787 Stats.py:794 +#: Stats.py:776 Stats.py:783 msgid "% fold frequency river/6th" msgstr "" -#: Stats.py:806 Stats.py:813 +#: Stats.py:795 Stats.py:802 msgid "% fold frequency 7th" msgstr "" -#: Stats.py:833 +#: Stats.py:822 msgid "Example stats, player = %s hand = %s:" msgstr "" -#: Stats.py:866 +#: Stats.py:855 msgid "" "\n" "\n" "Legal stats:" msgstr "" -#: Stats.py:867 +#: Stats.py:856 msgid "" "(add _0 to name to display with 0 decimal places, _1 to display with 1, " "etc)\n" msgstr "" -#: Tables.py:234 -msgid "Found unknown table = %s" -msgstr "" - -#: Tables.py:261 -msgid "attach to window" -msgstr "" - #: Tables_Demo.py:72 msgid "Fake HUD Main Window" msgstr "" @@ -2581,238 +2646,228 @@ msgid "Confirm deleting and recreating tables" msgstr "Tabellen löschen und reinitialisieren" #: fpdb.pyw:547 -msgid "" -"Please confirm that you want to (re-)create the tables. If there already are " -"tables in the database " -msgstr "" +msgid "Please confirm that you want to (re-)create the tables." +msgstr "Bitte bestätigen Sie, dass Sie die Tabellen neu erstellen möchten." #: fpdb.pyw:548 msgid "" -" they will be deleted and you will have to re-import your histories.\n" -"This may take a while." +" If there already are tables in the database %s on %s they will be deleted " +"and you will have to re-import your histories.\n" msgstr "" +" Falls bereits Tabellen in der Datenbank %s auf %s existieren werden Sie " +"gelöscht werden und Sie werden Ihre Histories neu importieren müssen.\n" -#: fpdb.pyw:573 +#: fpdb.pyw:549 +msgid "This may take a while." +msgstr "Dies kann eine Weile dauern." + +#: fpdb.pyw:574 msgid "User cancelled recreating tables" msgstr "Benutzer hat Reinitialisierung der Tabellen abgebrochen" -#: fpdb.pyw:580 +#: fpdb.pyw:581 msgid "Please confirm that you want to re-create the HUD cache." msgstr "Bitte bestätigen Sie, dass Sie den HUD-Cache neu erstellen möchten." -#: fpdb.pyw:588 +#: fpdb.pyw:589 msgid " Hero's cache starts: " msgstr "" -#: fpdb.pyw:602 +#: fpdb.pyw:603 msgid " Villains' cache starts: " msgstr "" -#: fpdb.pyw:615 +#: fpdb.pyw:616 msgid " Rebuilding HUD Cache ... " msgstr " Der HUD-Cache wird neu erstellt ... " -#: fpdb.pyw:623 +#: fpdb.pyw:624 msgid "User cancelled rebuilding hud cache" msgstr "Benutzer hat Neuerstellung des HUD-Cache abgebrochen" -#: fpdb.pyw:635 +#: fpdb.pyw:636 msgid "Confirm rebuilding database indexes" msgstr "Bestätigung der Neuerstellung der Datenbankindexe" -#: fpdb.pyw:636 +#: fpdb.pyw:637 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" "Bitte bestätigen Sie, dass Sie die Datenbankindexe neu erstellen möchten." -#: fpdb.pyw:644 +#: fpdb.pyw:645 msgid " Rebuilding Indexes ... " msgstr " Datenbankindexe werden neu erstellt ... " -#: fpdb.pyw:651 +#: fpdb.pyw:652 msgid " Cleaning Database ... " msgstr " Reinige Datenbank ... " -#: fpdb.pyw:656 +#: fpdb.pyw:657 msgid " Analyzing Database ... " msgstr " Analysiere Datenbank ... " -#: fpdb.pyw:661 +#: fpdb.pyw:662 msgid "User cancelled rebuilding db indexes" msgstr "Benutzer hat Neuerstellung der Datenbankindexe abgebrochen" -#: fpdb.pyw:756 +#: fpdb.pyw:757 msgid "" "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" -#: fpdb.pyw:759 -msgid "Fatal Error - Config File Missing" -msgstr "Schwerer Fehler - Konfigurationsdatei nicht gefunden" - -#: fpdb.pyw:761 -msgid "Please copy the config file from the docs folder to:" -msgstr "" - -#: fpdb.pyw:769 -msgid "" -"and edit it according to the install documentation at http://fpdb." -"sourceforge.net" -msgstr "" - -#: fpdb.pyw:825 +#: fpdb.pyw:808 msgid "_Main" msgstr "_Hauptmenü" -#: fpdb.pyw:826 fpdb.pyw:853 +#: fpdb.pyw:809 fpdb.pyw:836 msgid "_Quit" msgstr "_Beenden" -#: fpdb.pyw:827 +#: fpdb.pyw:810 msgid "L" msgstr "L" -#: fpdb.pyw:827 +#: fpdb.pyw:810 msgid "_Load Profile (broken)" msgstr "Profil _Laden (kaputt)" -#: fpdb.pyw:828 +#: fpdb.pyw:811 msgid "S" msgstr "S" -#: fpdb.pyw:828 +#: fpdb.pyw:811 msgid "_Save Profile (todo)" msgstr "Profil _Speichern (nicht fertig)" -#: fpdb.pyw:829 +#: fpdb.pyw:812 msgid "F" msgstr "F" -#: fpdb.pyw:829 +#: fpdb.pyw:812 msgid "Pre_ferences" msgstr "_Einstellungen" -#: fpdb.pyw:830 +#: fpdb.pyw:813 msgid "_Import" msgstr "_Importieren" -#: fpdb.pyw:831 +#: fpdb.pyw:814 msgid "B" msgstr "B" -#: fpdb.pyw:832 +#: fpdb.pyw:815 msgid "I" msgstr "I" -#: fpdb.pyw:832 +#: fpdb.pyw:815 msgid "_Import through eMail/IMAP" msgstr "_Import per eMail/IMAP" -#: fpdb.pyw:833 +#: fpdb.pyw:816 msgid "_Viewers" msgstr "" -#: fpdb.pyw:834 +#: fpdb.pyw:817 msgid "A" msgstr "A" -#: fpdb.pyw:834 +#: fpdb.pyw:817 msgid "_Auto Import and HUD" msgstr "_Autoimport und HUD" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "H" msgstr "H" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "_HUD Configurator" msgstr "_HUD-Konfigurator" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "G" msgstr "G" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "_Graphs" msgstr "_Graphen" -#: fpdb.pyw:837 +#: fpdb.pyw:820 msgid "P" msgstr "P" -#: fpdb.pyw:837 +#: fpdb.pyw:820 msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:821 msgid "T" msgstr "T" -#: fpdb.pyw:838 +#: fpdb.pyw:821 msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:822 msgid "Tourney _Viewer" msgstr "Tourney-_Betrachter" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "O" msgstr "O" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "Statistiken nach Position (Tabelle, nicht auf sqlite)" -#: fpdb.pyw:841 fpdb.pyw:1057 +#: fpdb.pyw:824 fpdb.pyw:1039 msgid "Session Stats" msgstr "Statistiken nach Sitzung" -#: fpdb.pyw:842 +#: fpdb.pyw:825 msgid "_Database" msgstr "_Datenbank" -#: fpdb.pyw:843 +#: fpdb.pyw:826 msgid "_Maintain Databases" msgstr "Datenbanken _Verwalten" -#: fpdb.pyw:844 +#: fpdb.pyw:827 msgid "Create or Recreate _Tables" msgstr "_Tabellen erstellen oder neu erstellen" -#: fpdb.pyw:845 +#: fpdb.pyw:828 msgid "Rebuild HUD Cache" msgstr "HUD-Cache neu erstellen" -#: fpdb.pyw:846 +#: fpdb.pyw:829 msgid "Rebuild DB Indexes" msgstr "Datenbankindexe neu erstellen" -#: fpdb.pyw:847 +#: fpdb.pyw:830 msgid "_Statistics" msgstr "_Statistiken" -#: fpdb.pyw:848 +#: fpdb.pyw:831 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "Datenbank in eine Textdatei schreiben (dauert SEHR lange)" -#: fpdb.pyw:849 +#: fpdb.pyw:832 msgid "_Help" msgstr "_Hilfe" -#: fpdb.pyw:850 +#: fpdb.pyw:833 msgid "_Log Messages" msgstr "_Log-Dateien" -#: fpdb.pyw:851 +#: fpdb.pyw:834 msgid "A_bout, License, Copying" msgstr "_Über, Lizenz, Kopieren" -#: fpdb.pyw:869 +#: fpdb.pyw:852 msgid "There is an error in your config file\n" msgstr "Fehler in Ihrer Konfigurationsdatei\n" -#: fpdb.pyw:870 +#: fpdb.pyw:853 msgid "" "\n" "\n" @@ -2822,126 +2877,120 @@ msgstr "" "\n" "Der Fehler ist:" -#: fpdb.pyw:871 +#: fpdb.pyw:854 msgid "CONFIG FILE ERROR" -msgstr "" +msgstr "FEHLER IN DER KONFIGURATIONSDATEI" -#: fpdb.pyw:875 +#: fpdb.pyw:858 msgid "Logfile is %s\n" -msgstr "" +msgstr "Die Logdatei ist %s\n" -#: fpdb.pyw:877 +#: fpdb.pyw:860 msgid "Config file" msgstr "" -#: fpdb.pyw:878 +#: fpdb.pyw:861 msgid "" "has been created at:\n" "%s.\n" msgstr "" -#: fpdb.pyw:879 -msgid "Edit your screen_name and hand history path in the supported_sites " -msgstr "" - -#: fpdb.pyw:880 +#: fpdb.pyw:862 +#, fuzzy msgid "" -"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." msgstr "" +"Tragen Sie Ihren Benutzernamen (screen_name) und den Pfad zu den Hand " +"History Dateien in supported_sites ein " -#: fpdb.pyw:902 +#: fpdb.pyw:884 msgid "Connected to SQLite: %s" -msgstr "" +msgstr "Mit SQLite verbunden: %s" -#: fpdb.pyw:906 -msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " -msgstr "" - -#: fpdb.pyw:907 -msgid "Please check that the MySQL service has been started" -msgstr "" - -#: fpdb.pyw:911 -msgid "Postgres client reports: Unable to connect - " -msgstr "" - -#: fpdb.pyw:912 -msgid "Please check that the Postgres service has been started" -msgstr "" - -#: fpdb.pyw:936 +#: fpdb.pyw:918 msgid "Strong Warning - Invalid database version" -msgstr "" +msgstr "Achtung - Falsche Datenbankversion" -#: fpdb.pyw:938 +#: fpdb.pyw:920 msgid "An invalid DB version or missing tables have been detected." msgstr "" +"Falsche Version der Datenbankstrukturen oder fehlende Tabellen gefunden." -#: fpdb.pyw:942 +#: fpdb.pyw:924 msgid "" "This error is not necessarily fatal but it is strongly recommended that you " "recreate the tables by using the Database menu." msgstr "" +"Dieser Fehler führt nicht zwangsläufig zu einem Absturz aber es wird " +"dringendst empfohlen, dass Sie die Tabellen über das Datenbank-Menü neu " +"erstellen." -#: fpdb.pyw:946 +#: fpdb.pyw:928 msgid "" "Not doing this will likely lead to misbehaviour including fpdb crashes, " "corrupt data etc." msgstr "" +"Falls Sie dies nicht tun wird fpdb höchstwahrscheinlich abstürzen oder " +"falsche Daten speichern/anzeigen." -#: fpdb.pyw:959 +#: fpdb.pyw:941 msgid "Status: Connected to %s database named %s on host %s" -msgstr "" +msgstr "Status: Verbunden mit %s-Datenbank namens %s auf Host: %s" -#: fpdb.pyw:969 +#: fpdb.pyw:951 msgid "" "\n" -"Global lock taken by" +"Global lock taken by %s" msgstr "" +"\n" +"Globaler Lock durch %s genommen" -#: fpdb.pyw:972 +#: fpdb.pyw:954 msgid "" "\n" -"Failed to get global lock, it is currently held by" +"Failed to get global lock, it is currently held by %s" msgstr "" +"\n" +"Konnte globalen Lock nicht ergreifen, wird momentan von %s gehalten" -#: fpdb.pyw:982 +#: fpdb.pyw:964 msgid "Quitting normally" -msgstr "" +msgstr "Beende normal" -#: fpdb.pyw:1006 +#: fpdb.pyw:988 msgid "Global lock released.\n" -msgstr "" +msgstr "Globaler Lock freigegeben.\n" -#: fpdb.pyw:1013 +#: fpdb.pyw:995 msgid "Auto Import" -msgstr "" +msgstr "Autoimport" -#: fpdb.pyw:1020 +#: fpdb.pyw:1002 msgid "Bulk Import" -msgstr "" +msgstr "Massenimport" -#: fpdb.pyw:1026 +#: fpdb.pyw:1008 msgid "eMail Import" -msgstr "" +msgstr "Import per eMail" -#: fpdb.pyw:1033 +#: fpdb.pyw:1015 msgid "Ring Player Stats" msgstr "" -#: fpdb.pyw:1039 +#: fpdb.pyw:1021 msgid "Tourney Player Stats" msgstr "" -#: fpdb.pyw:1045 +#: fpdb.pyw:1027 msgid "Tourney Viewer" -msgstr "" +msgstr "Tourney-Betrachter" -#: fpdb.pyw:1051 +#: fpdb.pyw:1033 msgid "Positional Stats" -msgstr "" +msgstr "Statistiken nach Position" -#: fpdb.pyw:1061 +#: fpdb.pyw:1043 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in " @@ -2970,38 +3019,67 @@ msgid "" "You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0." "txt and mit.txt in the fpdb installation directory." msgstr "" +"Fpdb braucht Übersetzer!\n" +"Falls Sie eine andere Sprache können und ein paar Minuten oder mehr übrig " +"haben eMailen Sie bitte steffen@schaumburger.info\n" +"\n" +"Willkommen zu fpdb!\n" +"Wenn Sie über neue Versionen informiert werden wollen besuchen Sie bitte " +"https://lists.sourceforge.net/lists/listinfo/fpdb-announce\n" +"Wenn Sie die Entwicklung näher verfolgen möchten besuchen Sie bitte https://" +"lists.sourceforge.net/lists/listinfo/fpdb-main\n" +"\n" +"Dieses Programm ist noch eine Alpha-Version, das Datenbankformat ändert sich " +"also noch manchmal.\n" +"Sie sollten daher Ihre Hand History Dateien immer aufbewahren damit Sie nach " +"einem Update ggf. re-importieren können.\n" +"\n" +"Für Dokumentation besuchen Sie bitte unsere Webseite/Wiki unter http://fpdb." +"sourceforge.net/ .\n" +"Wenn Sie Hilfe brauchen klicken Sie auf \"Contact - Get Help\" auf unserer " +"Webseite oder eMailen Sie mir auf Deutsch an steffen@schaumburger.info.\n" +"\n" +"Dieses Programm ist freie Software (frei wie in Freiheit) teilweise unter " +"der AGPL3-Lizenz und teilweise unter GPL2 und später.\n" +"Das Windows-Installer-Paket enthält Code unter MIT-Lizenz.\n" +"Sie können die vollständigen Lizenztexte im fpdb-Installationsverzeichnis " +"unter agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt und mit.txt finden." -#: fpdb.pyw:1078 +#: fpdb.pyw:1060 msgid "Help" -msgstr "" +msgstr "Hilfe" -#: fpdb.pyw:1085 +#: fpdb.pyw:1067 msgid "Graphs" -msgstr "" +msgstr "Graphen" -#: fpdb.pyw:1137 +#: fpdb.pyw:1119 msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " -"in:\n" +"in: %s" msgstr "" -#: fpdb.pyw:1166 +#: fpdb.pyw:1148 msgid "fpdb starting ..." -msgstr "" +msgstr "fpdb startet ..." -#: fpdb.pyw:1223 +#: fpdb.pyw:1205 msgid "FPDB WARNING" -msgstr "" +msgstr "FPDB WARNUNG" -#: fpdb.pyw:1242 +#: fpdb.pyw:1224 msgid "" -"WARNING: Unable to find output hh directory %s\n" +"WARNING: Unable to find output hand history directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" +"WARNUNG: Konnte Hand History Ausgabeverzeichnis %s nicht finden\n" +"\n" +"Klicken Sie JA um das Verzeichnis zu erstellen, oder NEIN um ein anderes " +"auszuwählen." -#: fpdb.pyw:1250 +#: fpdb.pyw:1232 msgid "" "WARNING: Unable to create hand output directory. Importing is not likely to " "work until this is fixed." @@ -3009,15 +3087,15 @@ msgstr "" #: fpdb_import.py:60 msgid "Import database module: MySQLdb not found" -msgstr "" +msgstr "Import von Datenbankmodul: MySQLdb nicht gefunden" #: fpdb_import.py:67 msgid "Import database module: psycopg2 not found" -msgstr "" +msgstr "Import von Datenbankmodul: psycopg2 nicht gefunden" #: fpdb_import.py:189 msgid "Database ID for %s not found" -msgstr "" +msgstr "Datenbank-ID für %s nicht gefunden" #: fpdb_import.py:191 msgid "" @@ -3026,44 +3104,45 @@ msgid "" msgstr "" #: fpdb_import.py:227 -msgid "Attempted to add non-directory: '%s' as an import directory" +msgid "Attempted to add non-directory '%s' as an import directory" msgstr "" #: fpdb_import.py:237 msgid "Started at %s -- %d files to import. indexes: %s" -msgstr "" +msgstr "Beginn %s -- %d Dateien zu importieren. Indexe: %s" #: fpdb_import.py:246 msgid "No need to drop indexes." -msgstr "" +msgstr "Es ist nicht nötig die Indexe zu löschen." #: fpdb_import.py:265 msgid "writers finished already" -msgstr "" +msgstr "Writer sind bereits fertig" #: fpdb_import.py:268 msgid "waiting for writers to finish ..." -msgstr "" +msgstr "Warte, dass Writer fertig werden ..." #: fpdb_import.py:278 msgid " ... writers finished" -msgstr "" +msgstr " ... Writer sind fertig" #: fpdb_import.py:284 msgid "No need to rebuild indexes." -msgstr "" +msgstr "Es ist nicht nötig die Indexe neu zu erstellen" #: fpdb_import.py:288 msgid "No need to rebuild hudcache." -msgstr "" +msgstr "Es ist nicht nötig HudCache neu zu erstellen" #: fpdb_import.py:313 -msgid "sending finish msg qlen =" +msgid "sending finish message queue length =" msgstr "" #: fpdb_import.py:439 fpdb_import.py:441 -msgid "Converting " -msgstr "" +#, fuzzy +msgid "Converting %s" +msgstr "Konvertiere " #: fpdb_import.py:477 msgid "Hand processed but empty" @@ -3129,3 +3208,14 @@ msgid "" "no gtk directories found in your path - install gtk or edit the path " "manually\n" msgstr "" + +#~ msgid "Fatal Error - Config File Missing" +#~ msgstr "Schwerer Fehler - Konfigurationsdatei nicht gefunden" + +#, fuzzy +#~ msgid "Postgres client reports: Unable to connect - " +#~ msgstr "PostgreSQL Client meldet Fehler: Konnte nicht verbinden - " + +#, fuzzy +#~ msgid "Please check that the Postgres service has been started" +#~ msgstr "Bitte überprüfen Sie, dass der PostgreSQL-Dienst gestartet ist" diff --git a/pyfpdb/locale/fpdb-en_GB.pot b/pyfpdb/locale/fpdb-en_GB.pot index 6776e979..ba73641a 100644 --- a/pyfpdb/locale/fpdb-en_GB.pot +++ b/pyfpdb/locale/fpdb-en_GB.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-29 14:22+CEST\n" +"POT-Creation-Date: 2010-08-29 20:45+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -35,19 +35,19 @@ msgstr "" msgid "No bringin found" msgstr "" -#: BetfairToFpdb.py:206 OnGameToFpdb.py:308 PokerStarsToFpdb.py:440 +#: BetfairToFpdb.py:206 OnGameToFpdb.py:339 PokerStarsToFpdb.py:441 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "" -#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 +#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:525 PokerStarsToFpdb.py:468 msgid "parse input hand history" msgstr "" -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:526 PokerStarsToFpdb.py:469 msgid "output translation to" msgstr "" -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:527 PokerStarsToFpdb.py:470 msgid "follow (tail -f) the input" msgstr "" @@ -65,98 +65,102 @@ msgid "" "Could not encode: \"%s\"\n" msgstr "" -#: Configuration.py:113 Configuration.py:126 +#: Configuration.py:116 Configuration.py:131 msgid "" "Config file has been created at %s.\n" msgstr "" -#: Configuration.py:125 +#: Configuration.py:130 msgid "" "No %s found\n" " in %s\n" " or %s\n" msgstr "" -#: Configuration.py:131 Configuration.py:132 +#: Configuration.py:135 Configuration.py:136 msgid "" -"Error copying .example file, cannot fall back. Exiting.\n" +"Error copying .example config file, cannot fall back. Exiting.\n" msgstr "" -#: Configuration.py:136 Configuration.py:137 +#: Configuration.py:140 Configuration.py:141 msgid "" "No %s found, cannot fall back. Exiting.\n" msgstr "" -#: Configuration.py:167 +#: Configuration.py:173 msgid "Default logger initialised for " msgstr "" -#: Configuration.py:168 +#: Configuration.py:174 msgid "Default logger intialised for " msgstr "" -#: Configuration.py:179 Database.py:438 Database.py:439 +#: Configuration.py:185 Database.py:438 Database.py:439 msgid "Creating directory: '%s'" msgstr "" -#: Configuration.py:205 +#: Configuration.py:211 msgid "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're not on a Mac, please report this problem." msgstr "" -#: Configuration.py:303 +#: Configuration.py:309 msgid "Loading site" msgstr "" -#: Configuration.py:520 +#: Configuration.py:526 msgid "config.general: adding %s = %s" msgstr "" -#: Configuration.py:567 Configuration.py:568 +#: Configuration.py:573 Configuration.py:574 msgid "bad number in xalignment was ignored" msgstr "" -#: Configuration.py:616 +#: Configuration.py:622 msgid "missing config section raw_hands" msgstr "" -#: Configuration.py:622 +#: Configuration.py:628 msgid "Invalid config value for raw_hands.save, defaulting to \"error\"" msgstr "" -#: Configuration.py:629 +#: Configuration.py:635 msgid "Invalid config value for raw_hands.compression, defaulting to \"none\"" msgstr "" -#: Configuration.py:642 +#: Configuration.py:648 msgid "missing config section raw_tourneys" msgstr "" -#: Configuration.py:648 +#: Configuration.py:654 msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" msgstr "" -#: Configuration.py:655 +#: Configuration.py:661 msgid "Invalid config value for raw_tourneys.compression, defaulting to \"none\"" msgstr "" -#: Configuration.py:673 Configuration.py:674 +#: Configuration.py:679 Configuration.py:680 msgid "Configuration file %s not found. Using defaults." msgstr "" -#: Configuration.py:690 +#: Configuration.py:708 msgid "Reading configuration file %s" msgstr "" -#: Configuration.py:691 +#: Configuration.py:709 msgid "" "\n" "Reading configuration file %s\n" msgstr "" -#: Configuration.py:696 +#: Configuration.py:715 msgid "Error parsing %s. See error log file." msgstr "" +#: Configuration.py:831 +msgid "Error parsing example file %s. See error log file." +msgstr "" + #: Database.py:74 msgid "Not using sqlalchemy connection pool." msgstr "" @@ -449,7 +453,7 @@ msgstr "" msgid "get_stats took: %4.3f seconds" msgstr "" -#: Database.py:2373 Tables.py:448 +#: Database.py:2373 msgid "press enter to continue" msgstr "" @@ -502,7 +506,7 @@ msgid "Grouping:" msgstr "" #: Filters.py:66 -msgid "Show Position Stats:" +msgid "Show Position Stats" msgstr "" #: Filters.py:67 TourneyFilters.py:60 @@ -577,15 +581,23 @@ msgstr "" msgid "No games returned from database" msgstr "" +#: Filters.py:894 +msgid "From:" +msgstr "" + +#: Filters.py:908 +msgid "To:" +msgstr "" + #: Filters.py:913 msgid " Clear Dates " msgstr "" -#: Filters.py:940 fpdb.pyw:722 +#: Filters.py:940 fpdb.pyw:723 msgid "Pick a date" msgstr "" -#: Filters.py:946 fpdb.pyw:728 +#: Filters.py:946 fpdb.pyw:729 msgid "Done" msgstr "" @@ -594,15 +606,15 @@ msgid "Time between imports in seconds:" msgstr "" #: GuiAutoImport.py:116 GuiAutoImport.py:184 GuiAutoImport.py:261 -msgid " Start _Autoimport " +msgid " Start _Auto Import " msgstr "" #: GuiAutoImport.py:135 -msgid "AutoImport Ready." +msgid "Auto Import Ready." msgstr "" #: GuiAutoImport.py:148 -msgid "Please choose the path that you want to auto import" +msgid "Please choose the path that you want to Auto Import" msgstr "" #: GuiAutoImport.py:171 @@ -610,7 +622,7 @@ msgid " _Auto Import Running " msgstr "" #: GuiAutoImport.py:182 -msgid " Stop _Autoimport " +msgid " Stop _Auto Import " msgstr "" #: GuiAutoImport.py:207 @@ -620,7 +632,7 @@ msgid "" msgstr "" #: GuiAutoImport.py:209 -msgid " _Stop Autoimport " +msgid " _Stop Auto Import " msgstr "" #: GuiAutoImport.py:225 @@ -636,19 +648,19 @@ msgstr "" #: GuiAutoImport.py:249 msgid "" "\n" -"auto-import aborted - global lock not available" +"Auto Import aborted - global lock not available" msgstr "" #: GuiAutoImport.py:254 msgid "" "\n" -"Stopping autoimport - global lock released." +"Stopping Auto Import - global lock released." msgstr "" #: GuiAutoImport.py:256 msgid "" "\n" -" * Stop Autoimport: HUD already terminated" +" * Stop Auto Import: HUD already terminated" msgstr "" #: GuiAutoImport.py:283 @@ -678,7 +690,7 @@ msgid "Import Complete" msgstr "" #: GuiBulkImport.py:139 -msgid "bulk-import aborted - global lock not available" +msgid "bulk import aborted - global lock not available" msgstr "" #: GuiBulkImport.py:165 @@ -729,7 +741,7 @@ msgstr "" msgid "Drop HudCache:" msgstr "" -#: GuiBulkImport.py:297 fpdb.pyw:831 +#: GuiBulkImport.py:297 fpdb.pyw:814 msgid "_Bulk Import" msgstr "" @@ -801,95 +813,159 @@ msgstr "" msgid "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d in %s seconds - %.0f/sec" msgstr "" -#: GuiDatabase.py:106 GuiLogView.py:96 -msgid "Refresh" +#: GuiDatabase.py:117 +msgid "_Add" msgstr "" -#: GuiDatabase.py:111 +#: GuiDatabase.py:121 +msgid "_Refresh" +msgstr "" + +#: GuiDatabase.py:125 msgid "Type" msgstr "" -#: GuiDatabase.py:112 +#: GuiDatabase.py:126 msgid "Name" msgstr "" -#: GuiDatabase.py:113 +#: GuiDatabase.py:127 msgid "Description" msgstr "" -#: GuiDatabase.py:114 GuiImapFetcher.py:119 +#: GuiDatabase.py:128 GuiDatabase.py:459 GuiImapFetcher.py:119 msgid "Username" msgstr "" -#: GuiDatabase.py:115 GuiImapFetcher.py:119 +#: GuiDatabase.py:129 GuiDatabase.py:466 GuiImapFetcher.py:119 msgid "Password" msgstr "" -#: GuiDatabase.py:116 +#: GuiDatabase.py:130 msgid "Host" msgstr "" -#: GuiDatabase.py:117 -msgid "Default" +#: GuiDatabase.py:131 +msgid "Open" msgstr "" -#: GuiDatabase.py:118 +#: GuiDatabase.py:132 msgid "Status" msgstr "" -#: GuiDatabase.py:251 +#: GuiDatabase.py:266 msgid "Testing database connections ... " msgstr "" -#: GuiDatabase.py:281 -msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" -msgstr "" - -#: GuiDatabase.py:284 -msgid " connected ok" -msgstr "" - -#: GuiDatabase.py:291 -msgid " not connected but no exception" -msgstr "" - -#: GuiDatabase.py:293 fpdb.pyw:904 -msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" -msgstr "" - -#: GuiDatabase.py:297 -msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - Please check that the MySQL service has been started" -msgstr "" - -#: GuiDatabase.py:301 fpdb.pyw:909 -msgid "Postgres Server reports: Access denied. Are your permissions set correctly?" -msgstr "" - -#: GuiDatabase.py:304 -msgid "Postgres client reports: Unable to connect - Please check that the Postgres service has been started" -msgstr "" - -#: GuiDatabase.py:321 +#: GuiDatabase.py:293 msgid "finished." msgstr "" -#: GuiDatabase.py:331 -msgid "loaddbs error: " +#: GuiDatabase.py:303 +msgid "loadDbs error: " msgstr "" -#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 +#: GuiDatabase.py:324 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 msgid "***sortCols error: " msgstr "" -#: GuiDatabase.py:354 +#: GuiDatabase.py:326 msgid "sortCols error: " msgstr "" -#: GuiDatabase.py:424 GuiLogView.py:213 +#: GuiDatabase.py:371 +msgid "testDB: trying to connect to: %s/%s, %s, %s/%s" +msgstr "" + +#: GuiDatabase.py:374 +msgid " connected ok" +msgstr "" + +#: GuiDatabase.py:381 +msgid " not connected but no exception" +msgstr "" + +#: GuiDatabase.py:383 fpdb.pyw:886 +msgid "MySQL Server reports: Access denied. Are your permissions set correctly?" +msgstr "" + +#: GuiDatabase.py:387 fpdb.pyw:888 +msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " +msgstr "" + +#: GuiDatabase.py:388 fpdb.pyw:889 +msgid "Please check that the MySQL service has been started" +msgstr "" + +#: GuiDatabase.py:392 fpdb.pyw:891 +msgid "PostgreSQL Server reports: Access denied. Are your permissions set correctly?" +msgstr "" + +#: GuiDatabase.py:395 fpdb.pyw:893 +msgid "PostgreSQL client reports: Unable to connect - " +msgstr "" + +#: GuiDatabase.py:396 fpdb.pyw:894 +msgid "Please check that the PostgreSQL service has been started" +msgstr "" + +#: GuiDatabase.py:406 +msgid "db connection to " +msgstr "" + +#: GuiDatabase.py:434 +msgid "DB Type" +msgstr "" + +#: GuiDatabase.py:444 +msgid "DB Name" +msgstr "" + +#: GuiDatabase.py:452 +msgid "DB Description" +msgstr "" + +#: GuiDatabase.py:473 +msgid "Host Computer" +msgstr "" + +#: GuiDatabase.py:528 +msgid "Database created" +msgstr "" + +#: GuiDatabase.py:531 +msgid "Database creation failed" +msgstr "" + +#: GuiDatabase.py:550 +msgid "No Database Name given" +msgstr "" + +#: GuiDatabase.py:553 +msgid "No Database Description given" +msgstr "" + +#: GuiDatabase.py:556 +msgid "No Username given" +msgstr "" + +#: GuiDatabase.py:559 +msgid "No Password given" +msgstr "" + +#: GuiDatabase.py:562 +msgid "No Host given" +msgstr "" + +#: GuiDatabase.py:589 +msgid "Do you want to try again?" +msgstr "" + +#: GuiDatabase.py:702 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "" -#: GuiDatabase.py:429 GuiLogView.py:218 +#: GuiDatabase.py:707 GuiLogView.py:218 msgid "Log Viewer" msgstr "" @@ -1030,6 +1106,10 @@ msgstr "" msgid "Log Messages" msgstr "" +#: GuiLogView.py:96 +msgid "Refresh" +msgstr "" + #: GuiPositionalStats.py:146 msgid "DEBUG: activesite set to %s" msgstr "" @@ -1154,7 +1234,7 @@ msgid "" "Note: error output is being diverted to:\n" msgstr "" -#: HUD_main.pyw:96 fpdb.pyw:1138 +#: HUD_main.pyw:96 fpdb.pyw:1120 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1226,351 +1306,351 @@ msgid "" "Using db name = %s\n" msgstr "" -#: Hand.py:150 +#: Hand.py:151 msgid "BB" msgstr "" -#: Hand.py:151 +#: Hand.py:152 msgid "SB" msgstr "" -#: Hand.py:152 +#: Hand.py:153 msgid "BUTTONPOS" msgstr "" -#: Hand.py:153 +#: Hand.py:154 msgid "HAND NO." msgstr "" -#: Hand.py:154 TourneySummary.py:134 +#: Hand.py:155 TourneySummary.py:134 msgid "SITE" msgstr "" -#: Hand.py:155 +#: Hand.py:156 msgid "TABLE NAME" msgstr "" -#: Hand.py:156 TourneySummary.py:144 +#: Hand.py:157 TourneySummary.py:144 msgid "HERO" msgstr "" -#: Hand.py:157 TourneySummary.py:145 +#: Hand.py:158 TourneySummary.py:145 msgid "MAXSEATS" msgstr "" -#: Hand.py:158 +#: Hand.py:159 msgid "LEVEL" msgstr "" -#: Hand.py:159 TourneySummary.py:150 +#: Hand.py:160 TourneySummary.py:150 msgid "MIXED" msgstr "" -#: Hand.py:160 +#: Hand.py:161 msgid "LASTBET" msgstr "" -#: Hand.py:161 +#: Hand.py:162 msgid "ACTION STREETS" msgstr "" -#: Hand.py:162 +#: Hand.py:163 msgid "STREETS" msgstr "" -#: Hand.py:163 +#: Hand.py:164 msgid "ALL STREETS" msgstr "" -#: Hand.py:164 +#: Hand.py:165 msgid "COMMUNITY STREETS" msgstr "" -#: Hand.py:165 +#: Hand.py:166 msgid "HOLE STREETS" msgstr "" -#: Hand.py:166 +#: Hand.py:167 msgid "COUNTED SEATS" msgstr "" -#: Hand.py:167 +#: Hand.py:168 msgid "DEALT" msgstr "" -#: Hand.py:168 +#: Hand.py:169 msgid "SHOWN" msgstr "" -#: Hand.py:169 +#: Hand.py:170 msgid "MUCKED" msgstr "" -#: Hand.py:170 +#: Hand.py:171 msgid "TOTAL POT" msgstr "" -#: Hand.py:171 +#: Hand.py:172 msgid "TOTAL COLLECTED" msgstr "" -#: Hand.py:172 +#: Hand.py:173 msgid "RAKE" msgstr "" -#: Hand.py:173 TourneySummary.py:135 +#: Hand.py:174 TourneySummary.py:135 msgid "START TIME" msgstr "" -#: Hand.py:174 +#: Hand.py:175 msgid "TOURNAMENT NO" msgstr "" -#: Hand.py:175 TourneySummary.py:140 +#: Hand.py:176 TourneySummary.py:140 msgid "TOURNEY ID" msgstr "" -#: Hand.py:176 TourneySummary.py:139 +#: Hand.py:177 TourneySummary.py:139 msgid "TOURNEY TYPE ID" msgstr "" -#: Hand.py:177 TourneySummary.py:141 +#: Hand.py:178 TourneySummary.py:141 msgid "BUYIN" msgstr "" -#: Hand.py:178 +#: Hand.py:179 msgid "BUYIN CURRENCY" msgstr "" -#: Hand.py:179 +#: Hand.py:180 msgid "BUYIN CHIPS" msgstr "" -#: Hand.py:180 TourneySummary.py:142 +#: Hand.py:181 TourneySummary.py:142 msgid "FEE" msgstr "" -#: Hand.py:181 +#: Hand.py:182 msgid "IS REBUY" msgstr "" -#: Hand.py:182 +#: Hand.py:183 msgid "IS ADDON" msgstr "" -#: Hand.py:183 +#: Hand.py:184 msgid "IS KO" msgstr "" -#: Hand.py:184 TourneySummary.py:166 +#: Hand.py:185 TourneySummary.py:166 msgid "KO BOUNTY" msgstr "" -#: Hand.py:185 +#: Hand.py:186 msgid "IS MATRIX" msgstr "" -#: Hand.py:186 +#: Hand.py:187 msgid "IS SHOOTOUT" msgstr "" -#: Hand.py:187 TourneySummary.py:167 +#: Hand.py:188 TourneySummary.py:167 msgid "TOURNEY COMMENT" msgstr "" -#: Hand.py:190 TourneySummary.py:179 +#: Hand.py:191 TourneySummary.py:179 msgid "PLAYERS" msgstr "" -#: Hand.py:191 +#: Hand.py:192 msgid "STACKS" msgstr "" -#: Hand.py:192 +#: Hand.py:193 msgid "POSTED" msgstr "" -#: Hand.py:193 +#: Hand.py:194 msgid "POT" msgstr "" -#: Hand.py:194 +#: Hand.py:195 msgid "SEATING" msgstr "" -#: Hand.py:195 +#: Hand.py:196 msgid "GAMETYPE" msgstr "" -#: Hand.py:196 +#: Hand.py:197 msgid "ACTION" msgstr "" -#: Hand.py:197 +#: Hand.py:198 msgid "COLLECTEES" msgstr "" -#: Hand.py:198 +#: Hand.py:199 msgid "BETS" msgstr "" -#: Hand.py:199 +#: Hand.py:200 msgid "BOARD" msgstr "" -#: Hand.py:200 +#: Hand.py:201 msgid "DISCARDS" msgstr "" -#: Hand.py:201 +#: Hand.py:202 msgid "HOLECARDS" msgstr "" -#: Hand.py:202 +#: Hand.py:203 msgid "TOURNEYS PLAYER IDS" msgstr "" -#: Hand.py:225 Hand.py:1242 +#: Hand.py:226 Hand.py:1243 msgid "[ERROR] Tried to add holecards for unknown player: %s" msgstr "" -#: Hand.py:278 +#: Hand.py:279 msgid "Hand.insert(): hid #: %s is a duplicate" msgstr "" -#: Hand.py:317 -msgid "markstreets didn't match - Assuming hand cancelled" +#: Hand.py:318 +msgid "markstreets didn't match - Assuming hand %s was cancelled" msgstr "" -#: Hand.py:319 +#: Hand.py:320 msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" msgstr "" -#: Hand.py:323 +#: Hand.py:324 msgid "DEBUG: checkPlayerExists %s fail on hand number %s" msgstr "" -#: Hand.py:324 +#: Hand.py:325 msgid "checkPlayerExists: '%s fail on hand number %s" msgstr "" -#: Hand.py:405 +#: Hand.py:406 msgid "%s %s calls %s" msgstr "" -#: Hand.py:475 +#: Hand.py:476 msgid "%s %s raise %s" msgstr "" -#: Hand.py:486 +#: Hand.py:487 msgid "%s %s bets %s" msgstr "" -#: Hand.py:505 +#: Hand.py:506 msgid "%s %s folds" msgstr "" -#: Hand.py:514 +#: Hand.py:515 msgid "%s %s checks" msgstr "" -#: Hand.py:534 +#: Hand.py:535 msgid "addShownCards %s hole=%s all=%s" msgstr "" -#: Hand.py:645 +#: Hand.py:646 msgid "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, expecting datetime.date object, received:" msgstr "" -#: Hand.py:646 +#: Hand.py:647 msgid "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" -#: Hand.py:647 +#: Hand.py:648 msgid "*** Game String:" msgstr "" -#: Hand.py:701 +#: Hand.py:702 msgid "*** Parse error reading blinds (check compilePlayerRegexs as a likely culprit)" msgstr "" -#: Hand.py:728 +#: Hand.py:729 msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" msgstr "" -#: Hand.py:730 +#: Hand.py:731 msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" msgstr "" -#: Hand.py:1111 +#: Hand.py:1112 msgid "*** DEALING HANDS ***" msgstr "" -#: Hand.py:1116 +#: Hand.py:1117 msgid "Dealt to %s: [%s]" msgstr "" -#: Hand.py:1121 +#: Hand.py:1122 msgid "*** FIRST DRAW ***" msgstr "" -#: Hand.py:1131 +#: Hand.py:1132 msgid "*** SECOND DRAW ***" msgstr "" -#: Hand.py:1141 +#: Hand.py:1142 msgid "*** THIRD DRAW ***" msgstr "" -#: Hand.py:1151 Hand.py:1369 +#: Hand.py:1152 Hand.py:1370 msgid "*** SHOW DOWN ***" msgstr "" -#: Hand.py:1166 Hand.py:1384 +#: Hand.py:1167 Hand.py:1385 msgid "*** SUMMARY ***" msgstr "" -#: Hand.py:1251 +#: Hand.py:1252 msgid "%s %s completes %s" msgstr "" -#: Hand.py:1269 +#: Hand.py:1270 msgid "Bringin: %s, %s" msgstr "" -#: Hand.py:1309 +#: Hand.py:1310 msgid "*** 3RD STREET ***" msgstr "" -#: Hand.py:1323 +#: Hand.py:1324 msgid "*** 4TH STREET ***" msgstr "" -#: Hand.py:1335 +#: Hand.py:1336 msgid "*** 5TH STREET ***" msgstr "" -#: Hand.py:1347 +#: Hand.py:1348 msgid "*** 6TH STREET ***" msgstr "" -#: Hand.py:1357 +#: Hand.py:1358 msgid "*** RIVER ***" msgstr "" -#: Hand.py:1449 +#: Hand.py:1450 msgid "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should be impossible for anyone who is not a hero" msgstr "" -#: Hand.py:1450 +#: Hand.py:1451 msgid "join_holcards: holecards(%s): %s" msgstr "" -#: Hand.py:1533 +#: Hand.py:1534 msgid "DEBUG: call Pot.end() before printing pot total" msgstr "" -#: Hand.py:1535 +#: Hand.py:1536 msgid "FpdbError in printing Hand object" msgstr "" @@ -1693,138 +1773,128 @@ msgid "" " on %s." msgstr "" -#: Hud.py:149 +#: Hud.py:148 msgid "Kill This HUD" msgstr "" -#: Hud.py:154 +#: Hud.py:153 msgid "Save HUD Layout" msgstr "" -#: Hud.py:158 +#: Hud.py:157 msgid "Reposition StatWindows" msgstr "" -#: Hud.py:162 +#: Hud.py:161 msgid "Show Player Stats" msgstr "" -#: Hud.py:167 Hud.py:236 +#: Hud.py:166 Hud.py:235 msgid "For This Blind Level Only" msgstr "" -#: Hud.py:172 Hud.py:241 +#: Hud.py:171 Hud.py:240 msgid "For Multiple Blind Levels:" msgstr "" -#: Hud.py:175 Hud.py:244 +#: Hud.py:174 Hud.py:243 msgid " 0.5 to 2.0 x Current Blinds" msgstr "" -#: Hud.py:180 Hud.py:249 +#: Hud.py:179 Hud.py:248 msgid " 0.33 to 3.0 x Current Blinds" msgstr "" -#: Hud.py:185 Hud.py:254 +#: Hud.py:184 Hud.py:253 msgid " 0.1 to 10 x Current Blinds" msgstr "" -#: Hud.py:190 Hud.py:259 +#: Hud.py:189 Hud.py:258 msgid " All Levels" msgstr "" -#: Hud.py:195 Hud.py:264 +#: Hud.py:194 Hud.py:263 msgid "For #Seats:" msgstr "" -#: Hud.py:198 Hud.py:267 +#: Hud.py:197 Hud.py:266 msgid " Any Number" msgstr "" -#: Hud.py:203 Hud.py:272 +#: Hud.py:202 Hud.py:271 msgid " Custom" msgstr "" -#: Hud.py:208 Hud.py:277 +#: Hud.py:207 Hud.py:276 msgid " Exact" msgstr "" -#: Hud.py:213 Hud.py:282 +#: Hud.py:212 Hud.py:281 msgid "Since:" msgstr "" -#: Hud.py:216 Hud.py:285 +#: Hud.py:215 Hud.py:284 msgid " All Time" msgstr "" -#: Hud.py:221 Hud.py:290 +#: Hud.py:220 Hud.py:289 msgid " Session" msgstr "" -#: Hud.py:226 Hud.py:295 +#: Hud.py:225 Hud.py:294 msgid " %s Days" msgstr "" -#: Hud.py:231 +#: Hud.py:230 msgid "Show Opponent Stats" msgstr "" -#: Hud.py:353 +#: Hud.py:352 msgid "Debug StatWindows" msgstr "" -#: Hud.py:357 +#: Hud.py:356 msgid "Set max seats" msgstr "" -#: Hud.py:543 +#: Hud.py:542 msgid "Updating config file" msgstr "" -#: Hud.py:552 +#: Hud.py:551 msgid "" "No layout found for %d-max games for site %s\n" msgstr "" -#: Hud.py:566 +#: Hud.py:565 msgid "" "exception in Hud.adj_seats\n" "\n" msgstr "" -#: Hud.py:567 +#: Hud.py:566 msgid "error is %s" msgstr "" -#: Hud.py:574 +#: Hud.py:573 msgid "" "Error finding actual seat.\n" msgstr "" -#: Hud.py:590 +#: Hud.py:589 msgid "" "------------------------------------------------------------\n" "Creating hud from hand %s\n" msgstr "" -#: Hud.py:639 +#: Hud.py:638 msgid "KeyError at the start of the for loop in update in hud_main. How this can possibly happen is totally beyond my comprehension. Your HUD may be about to get really weird. -Eric" msgstr "" -#: Hud.py:640 +#: Hud.py:639 msgid "(btw, the key was %s and statd is %s" msgstr "" -#: Hud.py:947 -msgid "" -"Fake main window, blah blah, blah\n" -"blah, blah" -msgstr "" - -#: Hud.py:955 -msgid "Table not found." -msgstr "" - #: ImapFetcher.py:54 msgid "response to logging in:" msgstr "" @@ -1837,36 +1907,36 @@ msgstr "" msgid "No Name" msgstr "" -#: OnGameToFpdb.py:153 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 +#: OnGameToFpdb.py:178 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "" -#: OnGameToFpdb.py:154 PkrToFpdb.py:145 PkrToFpdb.py:173 +#: OnGameToFpdb.py:179 OnGameToFpdb.py:193 PkrToFpdb.py:145 PkrToFpdb.py:173 #: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "" -#: OnGameToFpdb.py:155 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 +#: OnGameToFpdb.py:180 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "" -#: OnGameToFpdb.py:235 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +#: OnGameToFpdb.py:192 +msgid "determineGameType: limit not found in self.limits(%s). hand: '%s'" +msgstr "" + +#: OnGameToFpdb.py:194 +msgid "limit not found in self.limits(%s). hand: '%s'" +msgstr "" + +#: OnGameToFpdb.py:268 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:321 msgid "readButton: not found" msgstr "" -#: OnGameToFpdb.py:250 -msgid "readBlinds starting" +#: OnGameToFpdb.py:288 +msgid "readBlinds in noSB exception - no SB created" msgstr "" -#: OnGameToFpdb.py:254 -msgid "re_postSB failed, hand=" -msgstr "" - -#: OnGameToFpdb.py:257 -msgid "readBlinds in noSB exception" -msgstr "" - -#: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 +#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 msgid "reading antes" msgstr "" @@ -1950,186 +2020,166 @@ msgstr "" msgid "in not result starttime" msgstr "" -#: PokerStarsToFpdb.py:273 +#: PokerStarsToFpdb.py:274 msgid "failed to detect currency" msgstr "" -#: Stats.py:103 -msgid "exception getting stat %s for player %s %s" -msgstr "" - -#: Stats.py:104 -msgid "Stats.do_stat result = %s" -msgstr "" - -#: Stats.py:113 -msgid "error: %s" -msgstr "" - -#: Stats.py:132 Stats.py:133 +#: Stats.py:122 Stats.py:123 msgid "Total Profit" msgstr "" -#: Stats.py:154 Stats.py:161 +#: Stats.py:144 Stats.py:151 msgid "Voluntarily Put In Pot Pre-Flop%" msgstr "" -#: Stats.py:174 Stats.py:182 +#: Stats.py:164 Stats.py:172 msgid "Pre-Flop Raise %" msgstr "" -#: Stats.py:195 Stats.py:203 +#: Stats.py:185 Stats.py:193 msgid "% went to showdown" msgstr "" -#: Stats.py:216 Stats.py:224 +#: Stats.py:206 Stats.py:214 msgid "% won money at showdown" msgstr "" -#: Stats.py:237 Stats.py:246 +#: Stats.py:227 Stats.py:236 msgid "profit/100hands" msgstr "" -#: Stats.py:240 +#: Stats.py:230 msgid "exception calcing p/100: 100 * %d / %d" msgstr "" -#: Stats.py:259 Stats.py:268 +#: Stats.py:249 Stats.py:258 msgid "big blinds/100 hands" msgstr "" -#: Stats.py:281 Stats.py:290 +#: Stats.py:271 Stats.py:280 msgid "Big Bets/100 hands" msgstr "" -#: Stats.py:284 +#: Stats.py:274 msgid "exception calcing BB/100: " msgstr "" -#: Stats.py:304 Stats.py:315 +#: Stats.py:294 Stats.py:303 msgid "Flop Seen %" msgstr "" -#: Stats.py:338 Stats.py:346 +#: Stats.py:326 Stats.py:335 msgid "number hands seen" msgstr "" -#: Stats.py:359 Stats.py:367 +#: Stats.py:348 Stats.py:356 msgid "folded flop/4th" msgstr "" -#: Stats.py:380 +#: Stats.py:369 msgid "% steal attempted" msgstr "" -#: Stats.py:395 Stats.py:402 +#: Stats.py:384 Stats.py:391 msgid "% folded SB to steal" msgstr "" -#: Stats.py:414 Stats.py:421 +#: Stats.py:403 Stats.py:410 msgid "% folded BB to steal" msgstr "" -#: Stats.py:436 Stats.py:443 +#: Stats.py:425 Stats.py:432 msgid "% folded blind to steal" msgstr "" -#: Stats.py:455 Stats.py:462 +#: Stats.py:444 Stats.py:451 msgid "% 3/4 Bet preflop/3rd" msgstr "" -#: Stats.py:474 Stats.py:481 +#: Stats.py:463 Stats.py:470 msgid "% won$/saw flop/4th" msgstr "" -#: Stats.py:493 Stats.py:500 +#: Stats.py:482 Stats.py:489 msgid "Aggression Freq flop/4th" msgstr "" -#: Stats.py:512 Stats.py:519 +#: Stats.py:501 Stats.py:508 msgid "Aggression Freq turn/5th" msgstr "" -#: Stats.py:531 Stats.py:538 +#: Stats.py:520 Stats.py:527 msgid "Aggression Freq river/6th" msgstr "" -#: Stats.py:550 Stats.py:557 +#: Stats.py:539 Stats.py:546 msgid "Aggression Freq 7th" msgstr "" -#: Stats.py:576 Stats.py:583 +#: Stats.py:565 Stats.py:572 msgid "Post-Flop Aggression Freq" msgstr "" -#: Stats.py:604 Stats.py:611 +#: Stats.py:593 Stats.py:600 msgid "Aggression Freq" msgstr "" -#: Stats.py:630 Stats.py:637 +#: Stats.py:619 Stats.py:626 msgid "Aggression Factor" msgstr "" -#: Stats.py:654 Stats.py:661 +#: Stats.py:643 Stats.py:650 msgid "% continuation bet " msgstr "" -#: Stats.py:673 Stats.py:680 +#: Stats.py:662 Stats.py:669 msgid "% continuation bet flop/4th" msgstr "" -#: Stats.py:692 Stats.py:699 +#: Stats.py:681 Stats.py:688 msgid "% continuation bet turn/5th" msgstr "" -#: Stats.py:711 Stats.py:718 +#: Stats.py:700 Stats.py:707 msgid "% continuation bet river/6th" msgstr "" -#: Stats.py:730 Stats.py:737 +#: Stats.py:719 Stats.py:726 msgid "% continuation bet 7th" msgstr "" -#: Stats.py:749 Stats.py:756 +#: Stats.py:738 Stats.py:745 msgid "% fold frequency flop/4th" msgstr "" -#: Stats.py:768 Stats.py:775 +#: Stats.py:757 Stats.py:764 msgid "% fold frequency turn/5th" msgstr "" -#: Stats.py:787 Stats.py:794 +#: Stats.py:776 Stats.py:783 msgid "% fold frequency river/6th" msgstr "" -#: Stats.py:806 Stats.py:813 +#: Stats.py:795 Stats.py:802 msgid "% fold frequency 7th" msgstr "" -#: Stats.py:833 +#: Stats.py:822 msgid "Example stats, player = %s hand = %s:" msgstr "" -#: Stats.py:866 +#: Stats.py:855 msgid "" "\n" "\n" "Legal stats:" msgstr "" -#: Stats.py:867 +#: Stats.py:856 msgid "" "(add _0 to name to display with 0 decimal places, _1 to display with 1, etc)\n" msgstr "" -#: Tables.py:234 -msgid "Found unknown table = %s" -msgstr "" - -#: Tables.py:261 -msgid "attach to window" -msgstr "" - #: Tables_Demo.py:72 msgid "Fake HUD Main Window" msgstr "" @@ -2514,356 +2564,327 @@ msgid "Confirm deleting and recreating tables" msgstr "" #: fpdb.pyw:547 -msgid "Please confirm that you want to (re-)create the tables. If there already are tables in the database " +msgid "Please confirm that you want to (re-)create the tables." msgstr "" #: fpdb.pyw:548 msgid "" -" they will be deleted and you will have to re-import your histories.\n" -"This may take a while." +" If there already are tables in the database %s on %s they will be deleted and you will have to re-import your histories.\n" msgstr "" -#: fpdb.pyw:573 +#: fpdb.pyw:549 +msgid "This may take a while." +msgstr "" + +#: fpdb.pyw:574 msgid "User cancelled recreating tables" msgstr "" -#: fpdb.pyw:580 +#: fpdb.pyw:581 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" -#: fpdb.pyw:588 +#: fpdb.pyw:589 msgid " Hero's cache starts: " msgstr "" -#: fpdb.pyw:602 +#: fpdb.pyw:603 msgid " Villains' cache starts: " msgstr "" -#: fpdb.pyw:615 +#: fpdb.pyw:616 msgid " Rebuilding HUD Cache ... " msgstr "" -#: fpdb.pyw:623 +#: fpdb.pyw:624 msgid "User cancelled rebuilding hud cache" msgstr "" -#: fpdb.pyw:635 +#: fpdb.pyw:636 msgid "Confirm rebuilding database indexes" msgstr "" -#: fpdb.pyw:636 +#: fpdb.pyw:637 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" -#: fpdb.pyw:644 +#: fpdb.pyw:645 msgid " Rebuilding Indexes ... " msgstr "" -#: fpdb.pyw:651 +#: fpdb.pyw:652 msgid " Cleaning Database ... " msgstr "" -#: fpdb.pyw:656 +#: fpdb.pyw:657 msgid " Analyzing Database ... " msgstr "" -#: fpdb.pyw:661 +#: fpdb.pyw:662 msgid "User cancelled rebuilding db indexes" msgstr "" -#: fpdb.pyw:756 +#: fpdb.pyw:757 msgid "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" -#: fpdb.pyw:759 -msgid "Fatal Error - Config File Missing" -msgstr "" - -#: fpdb.pyw:761 -msgid "Please copy the config file from the docs folder to:" -msgstr "" - -#: fpdb.pyw:769 -msgid "and edit it according to the install documentation at http://fpdb.sourceforge.net" -msgstr "" - -#: fpdb.pyw:825 +#: fpdb.pyw:808 msgid "_Main" msgstr "" -#: fpdb.pyw:826 fpdb.pyw:853 +#: fpdb.pyw:809 fpdb.pyw:836 msgid "_Quit" msgstr "" -#: fpdb.pyw:827 +#: fpdb.pyw:810 msgid "L" msgstr "" -#: fpdb.pyw:827 +#: fpdb.pyw:810 msgid "_Load Profile (broken)" msgstr "" -#: fpdb.pyw:828 +#: fpdb.pyw:811 msgid "S" msgstr "" -#: fpdb.pyw:828 +#: fpdb.pyw:811 msgid "_Save Profile (todo)" msgstr "" -#: fpdb.pyw:829 +#: fpdb.pyw:812 msgid "F" msgstr "" -#: fpdb.pyw:829 +#: fpdb.pyw:812 msgid "Pre_ferences" msgstr "" -#: fpdb.pyw:830 +#: fpdb.pyw:813 msgid "_Import" msgstr "" -#: fpdb.pyw:831 +#: fpdb.pyw:814 msgid "B" msgstr "" -#: fpdb.pyw:832 +#: fpdb.pyw:815 msgid "I" msgstr "" -#: fpdb.pyw:832 +#: fpdb.pyw:815 msgid "_Import through eMail/IMAP" msgstr "" -#: fpdb.pyw:833 +#: fpdb.pyw:816 msgid "_Viewers" msgstr "" -#: fpdb.pyw:834 +#: fpdb.pyw:817 msgid "A" msgstr "" -#: fpdb.pyw:834 +#: fpdb.pyw:817 msgid "_Auto Import and HUD" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "H" msgstr "" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "_HUD Configurator" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "G" msgstr "" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "_Graphs" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:820 msgid "P" msgstr "" -#: fpdb.pyw:837 +#: fpdb.pyw:820 msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:821 msgid "T" msgstr "" -#: fpdb.pyw:838 +#: fpdb.pyw:821 msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "" -#: fpdb.pyw:839 +#: fpdb.pyw:822 msgid "Tourney _Viewer" msgstr "" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "O" msgstr "" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "" -#: fpdb.pyw:841 fpdb.pyw:1057 +#: fpdb.pyw:824 fpdb.pyw:1039 msgid "Session Stats" msgstr "" -#: fpdb.pyw:842 +#: fpdb.pyw:825 msgid "_Database" msgstr "" -#: fpdb.pyw:843 +#: fpdb.pyw:826 msgid "_Maintain Databases" msgstr "" -#: fpdb.pyw:844 +#: fpdb.pyw:827 msgid "Create or Recreate _Tables" msgstr "" -#: fpdb.pyw:845 +#: fpdb.pyw:828 msgid "Rebuild HUD Cache" msgstr "" -#: fpdb.pyw:846 +#: fpdb.pyw:829 msgid "Rebuild DB Indexes" msgstr "" -#: fpdb.pyw:847 +#: fpdb.pyw:830 msgid "_Statistics" msgstr "" -#: fpdb.pyw:848 +#: fpdb.pyw:831 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "" -#: fpdb.pyw:849 +#: fpdb.pyw:832 msgid "_Help" msgstr "" -#: fpdb.pyw:850 +#: fpdb.pyw:833 msgid "_Log Messages" msgstr "" -#: fpdb.pyw:851 +#: fpdb.pyw:834 msgid "A_bout, License, Copying" msgstr "" -#: fpdb.pyw:869 +#: fpdb.pyw:852 msgid "" "There is an error in your config file\n" msgstr "" -#: fpdb.pyw:870 +#: fpdb.pyw:853 msgid "" "\n" "\n" "Error is: " msgstr "" -#: fpdb.pyw:871 +#: fpdb.pyw:854 msgid "CONFIG FILE ERROR" msgstr "" -#: fpdb.pyw:875 +#: fpdb.pyw:858 msgid "" "Logfile is %s\n" msgstr "" -#: fpdb.pyw:877 +#: fpdb.pyw:860 msgid "Config file" msgstr "" -#: fpdb.pyw:878 +#: fpdb.pyw:861 msgid "" "has been created at:\n" "%s.\n" msgstr "" -#: fpdb.pyw:879 -msgid "Edit your screen_name and hand history path in the supported_sites " +#: fpdb.pyw:862 +msgid "Edit your screen_name and hand history path in the supported_sites section of the Preferences window (Main menu) before trying to import hands." msgstr "" -#: fpdb.pyw:880 -msgid "section of the Preferences window (Main menu) before trying to import hands." -msgstr "" - -#: fpdb.pyw:902 +#: fpdb.pyw:884 msgid "Connected to SQLite: %s" msgstr "" -#: fpdb.pyw:906 -msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " -msgstr "" - -#: fpdb.pyw:907 -msgid "Please check that the MySQL service has been started" -msgstr "" - -#: fpdb.pyw:911 -msgid "Postgres client reports: Unable to connect - " -msgstr "" - -#: fpdb.pyw:912 -msgid "Please check that the Postgres service has been started" -msgstr "" - -#: fpdb.pyw:936 +#: fpdb.pyw:918 msgid "Strong Warning - Invalid database version" msgstr "" -#: fpdb.pyw:938 +#: fpdb.pyw:920 msgid "An invalid DB version or missing tables have been detected." msgstr "" -#: fpdb.pyw:942 +#: fpdb.pyw:924 msgid "This error is not necessarily fatal but it is strongly recommended that you recreate the tables by using the Database menu." msgstr "" -#: fpdb.pyw:946 +#: fpdb.pyw:928 msgid "Not doing this will likely lead to misbehaviour including fpdb crashes, corrupt data etc." msgstr "" -#: fpdb.pyw:959 +#: fpdb.pyw:941 msgid "Status: Connected to %s database named %s on host %s" msgstr "" -#: fpdb.pyw:969 +#: fpdb.pyw:951 msgid "" "\n" -"Global lock taken by" +"Global lock taken by %s" msgstr "" -#: fpdb.pyw:972 +#: fpdb.pyw:954 msgid "" "\n" -"Failed to get global lock, it is currently held by" +"Failed to get global lock, it is currently held by %s" msgstr "" -#: fpdb.pyw:982 +#: fpdb.pyw:964 msgid "Quitting normally" msgstr "" -#: fpdb.pyw:1006 +#: fpdb.pyw:988 msgid "" "Global lock released.\n" msgstr "" -#: fpdb.pyw:1013 +#: fpdb.pyw:995 msgid "Auto Import" msgstr "" -#: fpdb.pyw:1020 +#: fpdb.pyw:1002 msgid "Bulk Import" msgstr "" -#: fpdb.pyw:1026 +#: fpdb.pyw:1008 msgid "eMail Import" msgstr "" -#: fpdb.pyw:1033 +#: fpdb.pyw:1015 msgid "Ring Player Stats" msgstr "" -#: fpdb.pyw:1039 +#: fpdb.pyw:1021 msgid "Tourney Player Stats" msgstr "" -#: fpdb.pyw:1045 +#: fpdb.pyw:1027 msgid "Tourney Viewer" msgstr "" -#: fpdb.pyw:1051 +#: fpdb.pyw:1033 msgid "Positional Stats" msgstr "" -#: fpdb.pyw:1061 +#: fpdb.pyw:1043 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in touch by emailing steffen@schaumburger.info\n" @@ -2884,36 +2905,36 @@ msgid "" "You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt and mit.txt in the fpdb installation directory." msgstr "" -#: fpdb.pyw:1078 +#: fpdb.pyw:1060 msgid "Help" msgstr "" -#: fpdb.pyw:1085 +#: fpdb.pyw:1067 msgid "Graphs" msgstr "" -#: fpdb.pyw:1137 +#: fpdb.pyw:1119 msgid "" "\n" -"Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in:\n" +"Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt in: %s" msgstr "" -#: fpdb.pyw:1166 +#: fpdb.pyw:1148 msgid "fpdb starting ..." msgstr "" -#: fpdb.pyw:1223 +#: fpdb.pyw:1205 msgid "FPDB WARNING" msgstr "" -#: fpdb.pyw:1242 +#: fpdb.pyw:1224 msgid "" -"WARNING: Unable to find output hh directory %s\n" +"WARNING: Unable to find output hand history directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" -#: fpdb.pyw:1250 +#: fpdb.pyw:1232 msgid "WARNING: Unable to create hand output directory. Importing is not likely to work until this is fixed." msgstr "" @@ -2934,7 +2955,7 @@ msgid "[ERROR] More than 1 Database ID found for %s - Multiple currencies not im msgstr "" #: fpdb_import.py:227 -msgid "Attempted to add non-directory: '%s' as an import directory" +msgid "Attempted to add non-directory '%s' as an import directory" msgstr "" #: fpdb_import.py:237 @@ -2966,11 +2987,11 @@ msgid "No need to rebuild hudcache." msgstr "" #: fpdb_import.py:313 -msgid "sending finish msg qlen =" +msgid "sending finish message queue length =" msgstr "" #: fpdb_import.py:439 fpdb_import.py:441 -msgid "Converting " +msgid "Converting %s" msgstr "" #: fpdb_import.py:477 diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 5d4b6e45..2c2ea758 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-29 14:22+CEST\n" +"POT-Creation-Date: 2010-08-29 20:42+CEST\n" "PO-Revision-Date: 2010-08-29 14:25+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" @@ -36,19 +36,19 @@ msgstr "re_HandInfo nem illeszkedik" msgid "No bringin found" msgstr "Beülő nem található" -#: BetfairToFpdb.py:206 OnGameToFpdb.py:308 PokerStarsToFpdb.py:440 +#: BetfairToFpdb.py:206 OnGameToFpdb.py:339 PokerStarsToFpdb.py:441 msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "DEBUG: nem ismert readAction: '%s' '%s'" -#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:522 PokerStarsToFpdb.py:467 +#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:525 PokerStarsToFpdb.py:468 msgid "parse input hand history" msgstr "leosztástörténet feldolgozása" -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 +#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:526 PokerStarsToFpdb.py:469 msgid "output translation to" msgstr "feldolgozás eredményének helye" -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 +#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:527 PokerStarsToFpdb.py:470 msgid "follow (tail -f) the input" msgstr "kövesse a kimenetet (tail -f)" @@ -64,11 +64,11 @@ msgstr "Nem sikerült konvertálni: \"%s\"\n" msgid "Could not encode: \"%s\"\n" msgstr "Nem sikerült kódolni: \"%s\"\n" -#: Configuration.py:113 Configuration.py:126 +#: Configuration.py:116 Configuration.py:131 msgid "Config file has been created at %s.\n" msgstr "Konfigurációs fájl létrehozva itt: %s.\n" -#: Configuration.py:125 +#: Configuration.py:130 msgid "" "No %s found\n" " in %s\n" @@ -78,27 +78,28 @@ msgstr "" " itt: %s\n" " vagy itt: %s\n" -#: Configuration.py:131 Configuration.py:132 -msgid "Error copying .example file, cannot fall back. Exiting.\n" +#: Configuration.py:135 Configuration.py:136 +#, fuzzy +msgid "Error copying .example config file, cannot fall back. Exiting.\n" msgstr "Hiba a .example fájl másolása közben, nem tudom folytatni. Kilépés.\n" -#: Configuration.py:136 Configuration.py:137 +#: Configuration.py:140 Configuration.py:141 msgid "No %s found, cannot fall back. Exiting.\n" msgstr "%s nem található, nem tudom folytatni. Kilépés.\n" -#: Configuration.py:167 +#: Configuration.py:173 msgid "Default logger initialised for " msgstr "Alapértelmezett naplózó előkészítve ehhez: " -#: Configuration.py:168 +#: Configuration.py:174 msgid "Default logger intialised for " msgstr "Alapértelmezett naplózó előkészítve ehhez: " -#: Configuration.py:179 Database.py:438 Database.py:439 +#: Configuration.py:185 Database.py:438 Database.py:439 msgid "Creating directory: '%s'" msgstr "Könyvtár létrehozása: '%s'" -#: Configuration.py:205 +#: Configuration.py:211 msgid "" "Default encoding set to US-ASCII, defaulting to CP1252 instead -- If you're " "not on a Mac, please report this problem." @@ -106,59 +107,59 @@ msgstr "" "US-ASCII az alapértelmezett karakterkódolás, CP1252 használata ehelyett.Ha " "nem Mac-et használsz, akkor kérlek jelentsd ezt a problémát." -#: Configuration.py:303 +#: Configuration.py:309 msgid "Loading site" msgstr "Terem betöltése" -#: Configuration.py:520 +#: Configuration.py:526 msgid "config.general: adding %s = %s" msgstr "config.general: %s = %s hozzáadása" -#: Configuration.py:567 Configuration.py:568 +#: Configuration.py:573 Configuration.py:574 msgid "bad number in xalignment was ignored" msgstr "hibás érték az xalignment-ben - figyelmen kívül hagyás" -#: Configuration.py:616 +#: Configuration.py:622 msgid "missing config section raw_hands" msgstr "hiányzó konfigurációs bekezdés: raw_hands" -#: Configuration.py:622 +#: Configuration.py:628 msgid "Invalid config value for raw_hands.save, defaulting to \"error\"" msgstr "" "Érvénytelen raw_hands.save beállítás, az alapértelmezett \"error\" használata" -#: Configuration.py:629 +#: Configuration.py:635 msgid "Invalid config value for raw_hands.compression, defaulting to \"none\"" msgstr "" "Érvénytelen raw_hands.compression beállítás, az alapértelmezett \"none\" " "használata" -#: Configuration.py:642 +#: Configuration.py:648 msgid "missing config section raw_tourneys" msgstr "hiányzó konfigurációs bekezdés: raw_tourneys" -#: Configuration.py:648 +#: Configuration.py:654 msgid "Invalid config value for raw_tourneys.save, defaulting to \"error\"" msgstr "" "Érvénytelen raw_tourneys.save beállítás, az alapértelmezett \"error\" " "használata" -#: Configuration.py:655 +#: Configuration.py:661 msgid "" "Invalid config value for raw_tourneys.compression, defaulting to \"none\"" msgstr "" "Érvénytelen raw_tourneys.compression beállítás, az alapértelmezett \"none\" " "használata" -#: Configuration.py:673 Configuration.py:674 +#: Configuration.py:679 Configuration.py:680 msgid "Configuration file %s not found. Using defaults." msgstr "A %s konfigurációs fájl nem található. Alapértelmezések használata." -#: Configuration.py:690 +#: Configuration.py:708 msgid "Reading configuration file %s" msgstr "%s konfigurációs fájl olvasása" -#: Configuration.py:691 +#: Configuration.py:709 msgid "" "\n" "Reading configuration file %s\n" @@ -166,10 +167,15 @@ msgstr "" "\n" "%s konfigurációs fájl olvasása\n" -#: Configuration.py:696 +#: Configuration.py:715 msgid "Error parsing %s. See error log file." msgstr "Hiba a(z) %s értelmezése közben. Nézz bele a hibanaplóba." +#: Configuration.py:831 +#, fuzzy +msgid "Error parsing example file %s. See error log file." +msgstr "Hiba a(z) %s értelmezése közben. Nézz bele a hibanaplóba." + #: Database.py:74 msgid "Not using sqlalchemy connection pool." msgstr "SQLAlchemy connection pool használatának kihagyása." @@ -474,7 +480,7 @@ msgstr "kezdőkéz =" msgid "get_stats took: %4.3f seconds" msgstr "get_stats időigény: %4.3f mp" -#: Database.py:2373 Tables.py:448 +#: Database.py:2373 msgid "press enter to continue" msgstr "nyomj ENTER-t a folytatáshoz" @@ -527,7 +533,8 @@ msgid "Grouping:" msgstr "Csoportosítás:" #: Filters.py:66 -msgid "Show Position Stats:" +#, fuzzy +msgid "Show Position Stats" msgstr "Pozíció" #: Filters.py:67 TourneyFilters.py:60 @@ -602,15 +609,23 @@ msgstr "INFO: nem található játék az adatbázisban" msgid "No games returned from database" msgstr "Nem található játék az adatbázisban" +#: Filters.py:894 +msgid "From:" +msgstr "" + +#: Filters.py:908 +msgid "To:" +msgstr "" + #: Filters.py:913 msgid " Clear Dates " msgstr "Törlés" -#: Filters.py:940 fpdb.pyw:722 +#: Filters.py:940 fpdb.pyw:723 msgid "Pick a date" msgstr "Válassz napot" -#: Filters.py:946 fpdb.pyw:728 +#: Filters.py:946 fpdb.pyw:729 msgid "Done" msgstr "Kész" @@ -619,15 +634,18 @@ msgid "Time between imports in seconds:" msgstr "Importálások közti idő (mp):" #: GuiAutoImport.py:116 GuiAutoImport.py:184 GuiAutoImport.py:261 -msgid " Start _Autoimport " +#, fuzzy +msgid " Start _Auto Import " msgstr " _AutoImport indítása " #: GuiAutoImport.py:135 -msgid "AutoImport Ready." +#, fuzzy +msgid "Auto Import Ready." msgstr "AutoImport kész." #: GuiAutoImport.py:148 -msgid "Please choose the path that you want to auto import" +#, fuzzy +msgid "Please choose the path that you want to Auto Import" msgstr "Válaszd ki a könyvtárat az AutoImporthoz" #: GuiAutoImport.py:171 @@ -635,7 +653,8 @@ msgid " _Auto Import Running " msgstr " _AutoImport fut " #: GuiAutoImport.py:182 -msgid " Stop _Autoimport " +#, fuzzy +msgid " Stop _Auto Import " msgstr " _AutoImport leállítása " #: GuiAutoImport.py:207 @@ -647,7 +666,8 @@ msgstr "" "Globális zárolás OK ... AutoImport elindítva.\n" #: GuiAutoImport.py:209 -msgid " _Stop Autoimport " +#, fuzzy +msgid " _Stop Auto Import " msgstr " _AutoImport leállítása " #: GuiAutoImport.py:225 @@ -663,25 +683,28 @@ msgstr "" "*** GuiAutoImport Hiba a cső nyitásakor: " #: GuiAutoImport.py:249 +#, fuzzy msgid "" "\n" -"auto-import aborted - global lock not available" +"Auto Import aborted - global lock not available" msgstr "" "\n" "AutoImport megszakítva - nem elérhető a globális zárolás" #: GuiAutoImport.py:254 +#, fuzzy msgid "" "\n" -"Stopping autoimport - global lock released." +"Stopping Auto Import - global lock released." msgstr "" "\n" "AutoImport leállítása - globális zárolás feloldva." #: GuiAutoImport.py:256 +#, fuzzy msgid "" "\n" -" * Stop Autoimport: HUD already terminated" +" * Stop Auto Import: HUD already terminated" msgstr "" "\n" " * AutoImport megállítása: A HUD már nem fut" @@ -721,7 +744,8 @@ msgid "Import Complete" msgstr "Importálás kész" #: GuiBulkImport.py:139 -msgid "bulk-import aborted - global lock not available" +#, fuzzy +msgid "bulk import aborted - global lock not available" msgstr "importálás megszakítva - nem elérhető a globális zárolás" #: GuiBulkImport.py:165 @@ -772,7 +796,7 @@ msgstr "Terem:" msgid "Drop HudCache:" msgstr "HUD gyorstár eldobása:" -#: GuiBulkImport.py:297 fpdb.pyw:831 +#: GuiBulkImport.py:297 fpdb.pyw:814 msgid "_Bulk Import" msgstr "_Importálás" @@ -854,112 +878,185 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" -"s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " +"%s másodperc alatt - %.0f/mp" -#: GuiDatabase.py:106 GuiLogView.py:96 -msgid "Refresh" +#: GuiDatabase.py:117 +msgid "_Add" +msgstr "" + +#: GuiDatabase.py:121 +#, fuzzy +msgid "_Refresh" msgstr "Frissítés" -#: GuiDatabase.py:111 +#: GuiDatabase.py:125 msgid "Type" msgstr "Típus" -#: GuiDatabase.py:112 +#: GuiDatabase.py:126 msgid "Name" msgstr "Név" -#: GuiDatabase.py:113 +#: GuiDatabase.py:127 msgid "Description" msgstr "Leírás" -#: GuiDatabase.py:114 GuiImapFetcher.py:119 +#: GuiDatabase.py:128 GuiDatabase.py:459 GuiImapFetcher.py:119 msgid "Username" msgstr "Felhasználónév" -#: GuiDatabase.py:115 GuiImapFetcher.py:119 +#: GuiDatabase.py:129 GuiDatabase.py:466 GuiImapFetcher.py:119 msgid "Password" msgstr "Jelszó" -#: GuiDatabase.py:116 +#: GuiDatabase.py:130 msgid "Host" msgstr "Kiszolgáló" -#: GuiDatabase.py:117 -msgid "Default" -msgstr "Alapértelmezett" +#: GuiDatabase.py:131 +msgid "Open" +msgstr "" -#: GuiDatabase.py:118 +#: GuiDatabase.py:132 msgid "Status" msgstr "Állapot" -#: GuiDatabase.py:251 +#: GuiDatabase.py:266 msgid "Testing database connections ... " msgstr "Adatbázis-kapcsolatok ellenőrzése ..." -#: GuiDatabase.py:281 -msgid "loaddbs: trying to connect to: %s/%s, %s, %s/%s" +#: GuiDatabase.py:293 +msgid "finished." +msgstr "befejezve." + +#: GuiDatabase.py:303 +#, fuzzy +msgid "loadDbs error: " +msgstr "loaddbs hiba: " + +#: GuiDatabase.py:324 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 +msgid "***sortCols error: " +msgstr "***sortCols hiba: " + +#: GuiDatabase.py:326 +msgid "sortCols error: " +msgstr "sortCols hiba: " + +#: GuiDatabase.py:371 +#, fuzzy +msgid "testDB: trying to connect to: %s/%s, %s, %s/%s" msgstr "loaddbs: kapcolódási próbálkozás: %s/%s, %s, %s/%s" -#: GuiDatabase.py:284 +#: GuiDatabase.py:374 msgid " connected ok" msgstr " kapcsolódás OK" -#: GuiDatabase.py:291 +#: GuiDatabase.py:381 msgid " not connected but no exception" msgstr " nem kapcsolódott, de nem volt hibaüzenet" -#: GuiDatabase.py:293 fpdb.pyw:904 +#: GuiDatabase.py:383 fpdb.pyw:886 msgid "" "MySQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" "MySQL szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " "jogosultságaid?" -#: GuiDatabase.py:297 -msgid "" -"MySQL client reports: 2002 or 2003 error. Unable to connect - Please check " -"that the MySQL service has been started" +#: GuiDatabase.py:387 fpdb.pyw:888 +msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " msgstr "" "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " -"- Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" +"- " -#: GuiDatabase.py:301 fpdb.pyw:909 +#: GuiDatabase.py:388 fpdb.pyw:889 +msgid "Please check that the MySQL service has been started" +msgstr "Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" + +#: GuiDatabase.py:392 fpdb.pyw:891 +#, fuzzy msgid "" -"Postgres Server reports: Access denied. Are your permissions set correctly?" +"PostgreSQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" "Postgres szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " "jogosultságaid?" -#: GuiDatabase.py:304 -msgid "" -"Postgres client reports: Unable to connect - Please check that the Postgres " -"service has been started" +#: GuiDatabase.py:395 fpdb.pyw:893 +#, fuzzy +msgid "PostgreSQL client reports: Unable to connect - " +msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " + +#: GuiDatabase.py:396 fpdb.pyw:894 +#, fuzzy +msgid "Please check that the PostgreSQL service has been started" +msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" + +#: GuiDatabase.py:406 +#, fuzzy +msgid "db connection to " +msgstr "folytató nyitás %" + +#: GuiDatabase.py:434 +#, fuzzy +msgid "DB Type" +msgstr "Típus" + +#: GuiDatabase.py:444 +#, fuzzy +msgid "DB Name" +msgstr "Név" + +#: GuiDatabase.py:452 +#, fuzzy +msgid "DB Description" +msgstr "Leírás" + +#: GuiDatabase.py:473 +#, fuzzy +msgid "Host Computer" +msgstr "Importálás kész" + +#: GuiDatabase.py:528 +#, fuzzy +msgid "Database created" +msgstr "A_datbázis" + +#: GuiDatabase.py:531 +#, fuzzy +msgid "Database creation failed" +msgstr " index létrehozása nem sikerült: " + +#: GuiDatabase.py:550 +msgid "No Database Name given" msgstr "" -"Postgres kliens jelenti: Nem sikerült a kapcsolódás. .Kérlek ellenőrizd, " -"hogy a Postgres szolgáltatás el van-e indítva" -#: GuiDatabase.py:321 -msgid "finished." -msgstr "befejezve." +#: GuiDatabase.py:553 +msgid "No Database Description given" +msgstr "" -#: GuiDatabase.py:331 -msgid "loaddbs error: " -msgstr "loaddbs hiba: " +#: GuiDatabase.py:556 +#, fuzzy +msgid "No Username given" +msgstr "Felhasználónév" -#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 -msgid "***sortCols error: " -msgstr "***sortCols hiba: " +#: GuiDatabase.py:559 +#, fuzzy +msgid "No Password given" +msgstr "Jelszó" -#: GuiDatabase.py:354 -msgid "sortCols error: " -msgstr "sortCols hiba: " +#: GuiDatabase.py:562 +msgid "No Host given" +msgstr "" -#: GuiDatabase.py:424 GuiLogView.py:213 +#: GuiDatabase.py:589 +msgid "Do you want to try again?" +msgstr "" + +#: GuiDatabase.py:702 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "Napló böngésző (teszt)" -#: GuiDatabase.py:429 GuiLogView.py:218 +#: GuiDatabase.py:707 GuiLogView.py:218 msgid "Log Viewer" msgstr "Napló böngésző" @@ -1115,6 +1212,10 @@ msgstr "Nem" msgid "Log Messages" msgstr "Naplóbejegyzések" +#: GuiLogView.py:96 +msgid "Refresh" +msgstr "Frissítés" + #: GuiPositionalStats.py:146 msgid "DEBUG: activesite set to %s" msgstr "DEBUG: aktív terem: %s" @@ -1248,7 +1349,7 @@ msgstr "HUD_main indítás: %s adatbázis használata" msgid "Note: error output is being diverted to:\n" msgstr "Megjegyzés: a hibakimenet ide van átirányítva:\n" -#: HUD_main.pyw:96 fpdb.pyw:1138 +#: HUD_main.pyw:96 fpdb.pyw:1120 msgid "" "\n" "Any major error will be reported there _only_.\n" @@ -1306,11 +1407,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -1320,260 +1421,261 @@ msgstr "HUD_main indítás\n" msgid "Using db name = %s\n" msgstr "%s adatbázis használata\n" -#: Hand.py:150 +#: Hand.py:151 msgid "BB" msgstr "BB" -#: Hand.py:151 +#: Hand.py:152 msgid "SB" msgstr "SB" -#: Hand.py:152 +#: Hand.py:153 msgid "BUTTONPOS" msgstr "GOMB" -#: Hand.py:153 +#: Hand.py:154 msgid "HAND NO." msgstr "LEOSZTÁS" -#: Hand.py:154 TourneySummary.py:134 +#: Hand.py:155 TourneySummary.py:134 msgid "SITE" msgstr "TEREM" -#: Hand.py:155 +#: Hand.py:156 msgid "TABLE NAME" msgstr "ASZTAL NEVE" -#: Hand.py:156 TourneySummary.py:144 +#: Hand.py:157 TourneySummary.py:144 msgid "HERO" msgstr "JÁTÉKOS" -#: Hand.py:157 TourneySummary.py:145 +#: Hand.py:158 TourneySummary.py:145 msgid "MAXSEATS" msgstr "MAX. SZÉKEK" -#: Hand.py:158 +#: Hand.py:159 msgid "LEVEL" msgstr "SZINT" -#: Hand.py:159 TourneySummary.py:150 +#: Hand.py:160 TourneySummary.py:150 msgid "MIXED" msgstr "KEVERT" -#: Hand.py:160 +#: Hand.py:161 msgid "LASTBET" msgstr "UTOLSÓ TÉT" -#: Hand.py:161 +#: Hand.py:162 msgid "ACTION STREETS" msgstr "AKCIÓ UTCÁK" -#: Hand.py:162 +#: Hand.py:163 msgid "STREETS" msgstr "UTCÁK" -#: Hand.py:163 +#: Hand.py:164 msgid "ALL STREETS" msgstr "MINDEN UTCA" -#: Hand.py:164 +#: Hand.py:165 msgid "COMMUNITY STREETS" msgstr "KÖZÖS UTCÁK" -#: Hand.py:165 +#: Hand.py:166 msgid "HOLE STREETS" msgstr "HOLE UTCÁK" -#: Hand.py:166 +#: Hand.py:167 msgid "COUNTED SEATS" msgstr "SZÁMOLT SZÉKEK" -#: Hand.py:167 +#: Hand.py:168 msgid "DEALT" msgstr "OSZTOTT" -#: Hand.py:168 +#: Hand.py:169 msgid "SHOWN" msgstr "MUTATOTT" -#: Hand.py:169 +#: Hand.py:170 msgid "MUCKED" msgstr "NEM MUTATOTT" -#: Hand.py:170 +#: Hand.py:171 msgid "TOTAL POT" msgstr "TELJES KASSZA" -#: Hand.py:171 +#: Hand.py:172 msgid "TOTAL COLLECTED" msgstr "TELJES BEGYŰJTÖTT" -#: Hand.py:172 +#: Hand.py:173 msgid "RAKE" msgstr "JUTALÉK" -#: Hand.py:173 TourneySummary.py:135 +#: Hand.py:174 TourneySummary.py:135 msgid "START TIME" msgstr "KEZDÉSI IDŐ" -#: Hand.py:174 +#: Hand.py:175 msgid "TOURNAMENT NO" msgstr "VERSENY SZÁM" -#: Hand.py:175 TourneySummary.py:140 +#: Hand.py:176 TourneySummary.py:140 msgid "TOURNEY ID" msgstr "VERSENYAZONOSÍTÓ" -#: Hand.py:176 TourneySummary.py:139 +#: Hand.py:177 TourneySummary.py:139 msgid "TOURNEY TYPE ID" msgstr "VERSENYTÍPUS AZONOSÍTÓ" -#: Hand.py:177 TourneySummary.py:141 +#: Hand.py:178 TourneySummary.py:141 msgid "BUYIN" msgstr "NEVEZÉSI DÍJ" -#: Hand.py:178 +#: Hand.py:179 msgid "BUYIN CURRENCY" msgstr "NEVEZÉSI DÍJ PÉNZNEME" -#: Hand.py:179 +#: Hand.py:180 msgid "BUYIN CHIPS" msgstr "KEZDŐ ZSETONOK" -#: Hand.py:180 TourneySummary.py:142 +#: Hand.py:181 TourneySummary.py:142 msgid "FEE" msgstr "DÍJ" -#: Hand.py:181 +#: Hand.py:182 msgid "IS REBUY" msgstr "REBUY" -#: Hand.py:182 +#: Hand.py:183 msgid "IS ADDON" msgstr "ADDON" -#: Hand.py:183 +#: Hand.py:184 msgid "IS KO" msgstr "KIÜTÉSES" -#: Hand.py:184 TourneySummary.py:166 +#: Hand.py:185 TourneySummary.py:166 msgid "KO BOUNTY" msgstr "FEJVADÁSZ" -#: Hand.py:185 +#: Hand.py:186 msgid "IS MATRIX" msgstr "MÁTRIX" -#: Hand.py:186 +#: Hand.py:187 msgid "IS SHOOTOUT" msgstr "SHOOTOUT" -#: Hand.py:187 TourneySummary.py:167 +#: Hand.py:188 TourneySummary.py:167 msgid "TOURNEY COMMENT" msgstr "VERSENY MEGJEGYZÉS" -#: Hand.py:190 TourneySummary.py:179 +#: Hand.py:191 TourneySummary.py:179 msgid "PLAYERS" msgstr "JÁTÉKOSOK" -#: Hand.py:191 +#: Hand.py:192 msgid "STACKS" msgstr "LETÉTEK" -#: Hand.py:192 +#: Hand.py:193 msgid "POSTED" msgstr "BETETT" -#: Hand.py:193 +#: Hand.py:194 msgid "POT" msgstr "KASSZA" -#: Hand.py:194 +#: Hand.py:195 msgid "SEATING" msgstr "ÜLTETÉS" -#: Hand.py:195 +#: Hand.py:196 msgid "GAMETYPE" msgstr "JÁTÉKTÍPUS" -#: Hand.py:196 +#: Hand.py:197 msgid "ACTION" msgstr "AKCIÓ" -#: Hand.py:197 +#: Hand.py:198 msgid "COLLECTEES" msgstr "BEGYŰJTŐK" -#: Hand.py:198 +#: Hand.py:199 msgid "BETS" msgstr "TÉTEK" -#: Hand.py:199 +#: Hand.py:200 msgid "BOARD" msgstr "ASZTAL" -#: Hand.py:200 +#: Hand.py:201 msgid "DISCARDS" msgstr "DOBÁSOK" -#: Hand.py:201 +#: Hand.py:202 msgid "HOLECARDS" msgstr "KEZDŐKÉZ" -#: Hand.py:202 +#: Hand.py:203 msgid "TOURNEYS PLAYER IDS" msgstr "VERSENYJÁTÉKOS AZONOSÍTÓK" -#: Hand.py:225 Hand.py:1242 +#: Hand.py:226 Hand.py:1243 msgid "[ERROR] Tried to add holecards for unknown player: %s" msgstr "[ERROR] Kezdőkéz hozzáadása ismeretlen játékoshoz: %s" -#: Hand.py:278 +#: Hand.py:279 msgid "Hand.insert(): hid #: %s is a duplicate" msgstr "Hand.insert(): %s leosztásazonosító duplikáció" -#: Hand.py:317 -msgid "markstreets didn't match - Assuming hand cancelled" +#: Hand.py:318 +#, fuzzy +msgid "markstreets didn't match - Assuming hand %s was cancelled" msgstr "markStreets nem egyezik - Leosztás érvénytelenítését feltételezem" -#: Hand.py:319 +#: Hand.py:320 msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" msgstr "" "FpdbParseError: markStreets hívása meghiúsult: az első 100 karakter: '%s'" -#: Hand.py:323 +#: Hand.py:324 msgid "DEBUG: checkPlayerExists %s fail on hand number %s" msgstr "DEBUG: checkPlayerExists %s hiba a következő leosztásban: %s" -#: Hand.py:324 +#: Hand.py:325 msgid "checkPlayerExists: '%s fail on hand number %s" msgstr "checkPlayerExists: '%s hiba a következő leosztásban: %s" -#: Hand.py:405 +#: Hand.py:406 msgid "%s %s calls %s" msgstr "%s utcán %s játékos ennyit megad: %s" -#: Hand.py:475 +#: Hand.py:476 msgid "%s %s raise %s" msgstr "%s utcán %s játékos eddig emel: %s" -#: Hand.py:486 +#: Hand.py:487 msgid "%s %s bets %s" msgstr "%s utcán %s játékos ennyit hív: %s" -#: Hand.py:505 +#: Hand.py:506 msgid "%s %s folds" msgstr "%s utcán %s játékos dob" -#: Hand.py:514 +#: Hand.py:515 msgid "%s %s checks" msgstr "%s utcán %s játékos passzol" -#: Hand.py:534 +#: Hand.py:535 msgid "addShownCards %s hole=%s all=%s" msgstr "addShownCards %s játékos kézben=%s mind=%s" -#: Hand.py:645 +#: Hand.py:646 msgid "" "*** ERROR - HAND: calling writeGameLine with unexpected STARTTIME value, " "expecting datetime.date object, received:" @@ -1581,18 +1683,18 @@ msgstr "" "*** ERROR - HAND: writeGameLine hívása nem várt STARTTIME értékkel, datetime." "date objektumot vár, ezt kapta:" -#: Hand.py:646 +#: Hand.py:647 msgid "" "*** Make sure your HandHistoryConverter is setting hand.startTime properly!" msgstr "" "*** Győződj meg róla, hogy a feldolgozód helyesen állítja be a hand." "startTime értékét!" -#: Hand.py:647 +#: Hand.py:648 msgid "*** Game String:" msgstr "*** Játék sztring:" -#: Hand.py:701 +#: Hand.py:702 msgid "" "*** Parse error reading blinds (check compilePlayerRegexs as a likely " "culprit)" @@ -1600,75 +1702,75 @@ msgstr "" "*** Feldolgozási hiba a vakok beolvasása közben (valószínűleg a " "compilePlayerRegex-eket kell ellenőrizni)" -#: Hand.py:728 +#: Hand.py:729 msgid "HoldemOmahaHand.__init__:Can't assemble hand from db without a handid" msgstr "" "HoldemOmahaHand.__init__: nem lehet a leosztást összeállítani az " "adatbázisból a leosztás azonosítója nélkül" -#: Hand.py:730 +#: Hand.py:731 msgid "HoldemOmahaHand.__init__:Neither HHC nor DB+handid provided" msgstr "" "HoldemOmahaHand.__init__: sem a HHC, sem az adatbázis+leosztásaonosító nem " "lett megadva" -#: Hand.py:1111 +#: Hand.py:1112 msgid "*** DEALING HANDS ***" msgstr "*** OSZTÁS ***" -#: Hand.py:1116 +#: Hand.py:1117 msgid "Dealt to %s: [%s]" msgstr "%s kapja: [%s]" -#: Hand.py:1121 +#: Hand.py:1122 msgid "*** FIRST DRAW ***" msgstr "*** ELSŐ CSERE ***" -#: Hand.py:1131 +#: Hand.py:1132 msgid "*** SECOND DRAW ***" msgstr "*** MÁSODIK CSERE ***" -#: Hand.py:1141 +#: Hand.py:1142 msgid "*** THIRD DRAW ***" msgstr "*** HARMADIK CSERE ***" -#: Hand.py:1151 Hand.py:1369 +#: Hand.py:1152 Hand.py:1370 msgid "*** SHOW DOWN ***" msgstr "*** MUTATÁS ***" -#: Hand.py:1166 Hand.py:1384 +#: Hand.py:1167 Hand.py:1385 msgid "*** SUMMARY ***" msgstr "*** ÖSSZEGZÉS ***" -#: Hand.py:1251 +#: Hand.py:1252 msgid "%s %s completes %s" msgstr "%s utcán %s játékos kiegészít erre: %s" -#: Hand.py:1269 +#: Hand.py:1270 msgid "Bringin: %s, %s" msgstr "Beülő: %s, %s" -#: Hand.py:1309 +#: Hand.py:1310 msgid "*** 3RD STREET ***" msgstr "*** HARMADIK UTCA ***" -#: Hand.py:1323 +#: Hand.py:1324 msgid "*** 4TH STREET ***" msgstr "*** NEGYEDIK UTCA ***" -#: Hand.py:1335 +#: Hand.py:1336 msgid "*** 5TH STREET ***" msgstr "*** ÖTÖDIK UTCA ***" -#: Hand.py:1347 +#: Hand.py:1348 msgid "*** 6TH STREET ***" msgstr "*** HATODIK UTCA ***" -#: Hand.py:1357 +#: Hand.py:1358 msgid "*** RIVER ***" msgstr "*** RIVER ***" -#: Hand.py:1449 +#: Hand.py:1450 msgid "" "join_holecards: # of holecards should be either < 4, 4 or 7 - 5 and 6 should " "be impossible for anyone who is not a hero" @@ -1676,15 +1778,15 @@ msgstr "" "join_holecards: a kézbe kapott lapok száma vagy < 4, 4 or 7 - 5 és 6 " "mindenki számára lehetetlen, aki nem hős" -#: Hand.py:1450 +#: Hand.py:1451 msgid "join_holcards: holecards(%s): %s" msgstr "join_holcards: holecards(%s): %s" -#: Hand.py:1533 +#: Hand.py:1534 msgid "DEBUG: call Pot.end() before printing pot total" msgstr "DEBUG: Pot.end() hívása a teljes kassza kiírása előtt" -#: Hand.py:1535 +#: Hand.py:1536 msgid "FpdbError in printing Hand object" msgstr "FpdbError egy Hand objektum kiírása közben" @@ -1812,99 +1914,99 @@ msgstr "" "Eddig %d leosztást játszottál\n" "a %s teremben." -#: Hud.py:149 +#: Hud.py:148 msgid "Kill This HUD" msgstr "Ezen HUD kilövése" -#: Hud.py:154 +#: Hud.py:153 msgid "Save HUD Layout" msgstr "HUD elrendezés mentése" -#: Hud.py:158 +#: Hud.py:157 msgid "Reposition StatWindows" msgstr "Újrapozícionálás" -#: Hud.py:162 +#: Hud.py:161 msgid "Show Player Stats" msgstr "Játékos statisztikák megjelenítése" -#: Hud.py:167 Hud.py:236 +#: Hud.py:166 Hud.py:235 msgid "For This Blind Level Only" msgstr "Csak erre a vakszintre" -#: Hud.py:172 Hud.py:241 +#: Hud.py:171 Hud.py:240 msgid "For Multiple Blind Levels:" msgstr "Több vakszintre:" -#: Hud.py:175 Hud.py:244 +#: Hud.py:174 Hud.py:243 msgid " 0.5 to 2.0 x Current Blinds" msgstr " A jelenlegi 0.5-2-szerese" -#: Hud.py:180 Hud.py:249 +#: Hud.py:179 Hud.py:248 msgid " 0.33 to 3.0 x Current Blinds" msgstr " A jelenlegi 0.33-3-szorosa" -#: Hud.py:185 Hud.py:254 +#: Hud.py:184 Hud.py:253 msgid " 0.1 to 10 x Current Blinds" msgstr " A jelenlegi 0.1-10-szerese" -#: Hud.py:190 Hud.py:259 +#: Hud.py:189 Hud.py:258 msgid " All Levels" msgstr " Minden limit" -#: Hud.py:195 Hud.py:264 +#: Hud.py:194 Hud.py:263 msgid "For #Seats:" msgstr "Ennyi szék számára:" -#: Hud.py:198 Hud.py:267 +#: Hud.py:197 Hud.py:266 msgid " Any Number" msgstr " Bármennyi" -#: Hud.py:203 Hud.py:272 +#: Hud.py:202 Hud.py:271 msgid " Custom" msgstr " Egyedi" -#: Hud.py:208 Hud.py:277 +#: Hud.py:207 Hud.py:276 msgid " Exact" msgstr " Csak ez" -#: Hud.py:213 Hud.py:282 +#: Hud.py:212 Hud.py:281 msgid "Since:" msgstr "Szűkítés:" -#: Hud.py:216 Hud.py:285 +#: Hud.py:215 Hud.py:284 msgid " All Time" msgstr " Mind" -#: Hud.py:221 Hud.py:290 +#: Hud.py:220 Hud.py:289 msgid " Session" msgstr " Session" -#: Hud.py:226 Hud.py:295 +#: Hud.py:225 Hud.py:294 msgid " %s Days" msgstr " Az elmúlt %s nap" -#: Hud.py:231 +#: Hud.py:230 msgid "Show Opponent Stats" msgstr "Ellenfél statisztikáinak mutatása" -#: Hud.py:353 +#: Hud.py:352 msgid "Debug StatWindows" msgstr "StatWindows debugolása" -#: Hud.py:357 +#: Hud.py:356 msgid "Set max seats" msgstr "Max székek beállítása" -#: Hud.py:543 +#: Hud.py:542 msgid "Updating config file" msgstr "Konfigurációs fájl frissítése" -#: Hud.py:552 +#: Hud.py:551 msgid "No layout found for %d-max games for site %s\n" msgstr "Nem található elrendezés a %d fős asztalok számára a %s teremben\n" -#: Hud.py:566 +#: Hud.py:565 msgid "" "exception in Hud.adj_seats\n" "\n" @@ -1912,15 +2014,15 @@ msgstr "" "hiba a Hud.adj_seats helyen\n" "\n" -#: Hud.py:567 +#: Hud.py:566 msgid "error is %s" msgstr "A hiba a következő: %s" -#: Hud.py:574 +#: Hud.py:573 msgid "Error finding actual seat.\n" msgstr "Hiba az aktuális szék keresése közben.\n" -#: Hud.py:590 +#: Hud.py:589 msgid "" "------------------------------------------------------------\n" "Creating hud from hand %s\n" @@ -1928,7 +2030,7 @@ msgstr "" "------------------------------------------------------------\n" "HUD készítése ebből a leosztásból: %s\n" -#: Hud.py:639 +#: Hud.py:638 msgid "" "KeyError at the start of the for loop in update in hud_main. How this can " "possibly happen is totally beyond my comprehension. Your HUD may be about to " @@ -1937,22 +2039,10 @@ msgstr "" "KeyError a for ciklus kezdeténél a hud_main-ban. Fogalmam sincs, hogy ez " "hogyan lehetséges. A HUD-od valószínűleg nagyon furcsa lesz. -Eric" -#: Hud.py:640 +#: Hud.py:639 msgid "(btw, the key was %s and statd is %s" msgstr "(ja, a kulcs %s volt a statd pedig %s)" -#: Hud.py:947 -msgid "" -"Fake main window, blah blah, blah\n" -"blah, blah" -msgstr "" -"Kamu főablak, bla bla, bla\n" -"bla, bla" - -#: Hud.py:955 -msgid "Table not found." -msgstr "Az asztal nem található." - #: ImapFetcher.py:54 msgid "response to logging in:" msgstr "válasz a bejelentkezésre:" @@ -1965,36 +2055,38 @@ msgstr "IMAP import befejezve, kapcsolat lezárása" msgid "No Name" msgstr "Nincs név" -#: OnGameToFpdb.py:153 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 +#: OnGameToFpdb.py:178 PkrToFpdb.py:144 PokerStarsToFpdb.py:189 msgid "determineGameType: Unable to recognise gametype from: '%s'" msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" -#: OnGameToFpdb.py:154 PkrToFpdb.py:145 PkrToFpdb.py:173 +#: OnGameToFpdb.py:179 OnGameToFpdb.py:193 PkrToFpdb.py:145 PkrToFpdb.py:173 #: PokerStarsToFpdb.py:190 PokerStarsToFpdb.py:220 msgid "determineGameType: Raising FpdbParseError" msgstr "determineGameType: FpdbParseError" -#: OnGameToFpdb.py:155 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 +#: OnGameToFpdb.py:180 PkrToFpdb.py:146 PokerStarsToFpdb.py:191 msgid "Unable to recognise gametype from: '%s'" msgstr "Nem sikerült felismerni a játéktípust innen: '%s'" -#: OnGameToFpdb.py:235 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:320 +#: OnGameToFpdb.py:192 +#, fuzzy +msgid "determineGameType: limit not found in self.limits(%s). hand: '%s'" +msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" + +#: OnGameToFpdb.py:194 +msgid "limit not found in self.limits(%s). hand: '%s'" +msgstr "" + +#: OnGameToFpdb.py:268 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:321 msgid "readButton: not found" msgstr "readButton: nem található" -#: OnGameToFpdb.py:250 -msgid "readBlinds starting" -msgstr "readBlinds indítása" - -#: OnGameToFpdb.py:254 -msgid "re_postSB failed, hand=" -msgstr "re_postSB nem sikerült, leosztás=" - -#: OnGameToFpdb.py:257 -msgid "readBlinds in noSB exception" +#: OnGameToFpdb.py:288 +#, fuzzy +msgid "readBlinds in noSB exception - no SB created" msgstr "readBlinds noSB-n belül hiba" -#: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 +#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 msgid "reading antes" msgstr "antek olvasása" @@ -2080,167 +2172,155 @@ msgstr "nem sikerült felismerni a beülő pénznemét ebben:" msgid "in not result starttime" msgstr "a starttime nem található részében" -#: PokerStarsToFpdb.py:273 +#: PokerStarsToFpdb.py:274 msgid "failed to detect currency" msgstr "nem sikerült a pénznem meghatározása" -#: Stats.py:103 -msgid "exception getting stat %s for player %s %s" -msgstr "hiba a %s statisztika számításakor %s játékosnál: %s" - -#: Stats.py:104 -msgid "Stats.do_stat result = %s" -msgstr "Stats.do_stat eredménye = %s" - -#: Stats.py:113 -msgid "error: %s" -msgstr "hiba: %s" - -#: Stats.py:132 Stats.py:133 +#: Stats.py:122 Stats.py:123 msgid "Total Profit" msgstr "teljes profit" -#: Stats.py:154 Stats.py:161 +#: Stats.py:144 Stats.py:151 msgid "Voluntarily Put In Pot Pre-Flop%" msgstr "önként befizet preflop %" -#: Stats.py:174 Stats.py:182 +#: Stats.py:164 Stats.py:172 msgid "Pre-Flop Raise %" msgstr "preflop emelés" -#: Stats.py:195 Stats.py:203 +#: Stats.py:185 Stats.py:193 msgid "% went to showdown" msgstr "terítésig megy %" -#: Stats.py:216 Stats.py:224 +#: Stats.py:206 Stats.py:214 msgid "% won money at showdown" msgstr "pénzt nyer terítéskor %" -#: Stats.py:237 Stats.py:246 +#: Stats.py:227 Stats.py:236 msgid "profit/100hands" msgstr "profit/100 leosztás" -#: Stats.py:240 +#: Stats.py:230 msgid "exception calcing p/100: 100 * %d / %d" msgstr "hiba a p/100 számítása közben: 100 * %d / %d" -#: Stats.py:259 Stats.py:268 +#: Stats.py:249 Stats.py:258 msgid "big blinds/100 hands" msgstr "nagyvak/100 leosztás" -#: Stats.py:281 Stats.py:290 +#: Stats.py:271 Stats.py:280 msgid "Big Bets/100 hands" msgstr "nagytét/100 leosztás" -#: Stats.py:284 +#: Stats.py:274 msgid "exception calcing BB/100: " msgstr "hiba a BB/100 számítása közben: " -#: Stats.py:304 Stats.py:315 +#: Stats.py:294 Stats.py:303 msgid "Flop Seen %" msgstr "flopot néz %" -#: Stats.py:338 Stats.py:346 +#: Stats.py:326 Stats.py:335 msgid "number hands seen" msgstr "látott leosztások száma" -#: Stats.py:359 Stats.py:367 +#: Stats.py:348 Stats.py:356 msgid "folded flop/4th" msgstr "dobott flopon/4. utcán" -#: Stats.py:380 +#: Stats.py:369 msgid "% steal attempted" msgstr "lopási kísérlet %" -#: Stats.py:395 Stats.py:402 +#: Stats.py:384 Stats.py:391 msgid "% folded SB to steal" msgstr "kisvakból dob lopásra %" -#: Stats.py:414 Stats.py:421 +#: Stats.py:403 Stats.py:410 msgid "% folded BB to steal" msgstr "nagyvakból dob lopásra %" -#: Stats.py:436 Stats.py:443 +#: Stats.py:425 Stats.py:432 msgid "% folded blind to steal" msgstr "dob lopásra %" -#: Stats.py:455 Stats.py:462 +#: Stats.py:444 Stats.py:451 msgid "% 3/4 Bet preflop/3rd" msgstr "3/4-bet preflop/3. utcán %" -#: Stats.py:474 Stats.py:481 +#: Stats.py:463 Stats.py:470 msgid "% won$/saw flop/4th" msgstr "$nyer/flopot/4. utcát néz %" -#: Stats.py:493 Stats.py:500 +#: Stats.py:482 Stats.py:489 msgid "Aggression Freq flop/4th" msgstr "agresszió gyakoriság flopon/4. utcán" -#: Stats.py:512 Stats.py:519 +#: Stats.py:501 Stats.py:508 msgid "Aggression Freq turn/5th" msgstr "agresszió gyakoriság turnön/5. utcán" -#: Stats.py:531 Stats.py:538 +#: Stats.py:520 Stats.py:527 msgid "Aggression Freq river/6th" msgstr "agresszió gyakoriság riveren/6. utcán" -#: Stats.py:550 Stats.py:557 +#: Stats.py:539 Stats.py:546 msgid "Aggression Freq 7th" msgstr "agresszió gyakoriság 7. utcán" -#: Stats.py:576 Stats.py:583 +#: Stats.py:565 Stats.py:572 msgid "Post-Flop Aggression Freq" msgstr "postflop agresszió gyakoriság" -#: Stats.py:604 Stats.py:611 +#: Stats.py:593 Stats.py:600 msgid "Aggression Freq" msgstr "agresszió gyakoriság" -#: Stats.py:630 Stats.py:637 +#: Stats.py:619 Stats.py:626 msgid "Aggression Factor" msgstr "agresszió faktor" -#: Stats.py:654 Stats.py:661 +#: Stats.py:643 Stats.py:650 msgid "% continuation bet " msgstr "folytató nyitás %" -#: Stats.py:673 Stats.py:680 +#: Stats.py:662 Stats.py:669 msgid "% continuation bet flop/4th" msgstr "folytató nyitás flopon/4. utcán %" -#: Stats.py:692 Stats.py:699 +#: Stats.py:681 Stats.py:688 msgid "% continuation bet turn/5th" msgstr "folytató nyitás turnön/5. utcán %" -#: Stats.py:711 Stats.py:718 +#: Stats.py:700 Stats.py:707 msgid "% continuation bet river/6th" msgstr "folytató nyitás riveren/6. utcán %" -#: Stats.py:730 Stats.py:737 +#: Stats.py:719 Stats.py:726 msgid "% continuation bet 7th" msgstr "folytató nyitás 7. utcán %" -#: Stats.py:749 Stats.py:756 +#: Stats.py:738 Stats.py:745 msgid "% fold frequency flop/4th" msgstr "dobási gyakoriság flopon/4. utcán %" -#: Stats.py:768 Stats.py:775 +#: Stats.py:757 Stats.py:764 msgid "% fold frequency turn/5th" msgstr "dobási gyakoriság turnön/5. utcán %" -#: Stats.py:787 Stats.py:794 +#: Stats.py:776 Stats.py:783 msgid "% fold frequency river/6th" msgstr "dobási gyakoriság riveren/6. utcán %" -#: Stats.py:806 Stats.py:813 +#: Stats.py:795 Stats.py:802 msgid "% fold frequency 7th" msgstr "dobási gyakoriság 7. utcán %" -#: Stats.py:833 +#: Stats.py:822 msgid "Example stats, player = %s hand = %s:" msgstr "Példa statisztikák, játékos = %s leosztás = %s:" -#: Stats.py:866 +#: Stats.py:855 msgid "" "\n" "\n" @@ -2250,7 +2330,7 @@ msgstr "" "\n" "Érvényes statisztikák:" -#: Stats.py:867 +#: Stats.py:856 msgid "" "(add _0 to name to display with 0 decimal places, _1 to display with 1, " "etc)\n" @@ -2258,14 +2338,6 @@ msgstr "" "(írj a név után _0-t tizedesjegy nélküli megjelenítéshez, _1-et az egy " "tizedesjegyhez, stb.)\n" -#: Tables.py:234 -msgid "Found unknown table = %s" -msgstr "Ismeretlen asztal = %s" - -#: Tables.py:261 -msgid "attach to window" -msgstr "csatolás ezen ablakhoz: " - #: Tables_Demo.py:72 msgid "Fake HUD Main Window" msgstr "Kamu HUD Főablak" @@ -2691,248 +2763,235 @@ msgid "Confirm deleting and recreating tables" msgstr "Erősítsd meg a táblák törlését és újra létrehozását" #: fpdb.pyw:547 -msgid "" -"Please confirm that you want to (re-)create the tables. If there already are " -"tables in the database " +#, fuzzy +msgid "Please confirm that you want to (re-)create the tables." msgstr "" -"Kérlek erősítsd meg, hogy valóban (újra) létre akarod hozni a táblákat. Ha " -"már vannak táblák az adatbázisban (" +"Kérlek erősítsd meg, hogy valóban újra akarod generálni a HUD gyorstárat." #: fpdb.pyw:548 +#, fuzzy msgid "" -" they will be deleted and you will have to re-import your histories.\n" -"This may take a while." +" If there already are tables in the database %s on %s they will be deleted " +"and you will have to re-import your histories.\n" msgstr "" "), akkor azok törölve lesznek, és újra kell importálnod a " "leosztástörténeteket.\n" "Ja, és ez eltarthat egy darabig:)" -#: fpdb.pyw:573 +#: fpdb.pyw:549 +msgid "This may take a while." +msgstr "" + +#: fpdb.pyw:574 msgid "User cancelled recreating tables" msgstr "A felhasználó megszakította a táblák újra létrehozását" -#: fpdb.pyw:580 +#: fpdb.pyw:581 msgid "Please confirm that you want to re-create the HUD cache." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod generálni a HUD gyorstárat." -#: fpdb.pyw:588 +#: fpdb.pyw:589 msgid " Hero's cache starts: " msgstr " Saját gyorstár innentől: " -#: fpdb.pyw:602 +#: fpdb.pyw:603 msgid " Villains' cache starts: " msgstr " Ellenfelek gyorstára innentől: " -#: fpdb.pyw:615 +#: fpdb.pyw:616 msgid " Rebuilding HUD Cache ... " msgstr " HUD gyorstár újraépítése ... " -#: fpdb.pyw:623 +#: fpdb.pyw:624 msgid "User cancelled rebuilding hud cache" msgstr "A felhasználó megszakította a HUD gyorstár újraépítését." -#: fpdb.pyw:635 +#: fpdb.pyw:636 msgid "Confirm rebuilding database indexes" msgstr "Erősítsd meg az adatbázis indexeinek újraépítését" -#: fpdb.pyw:636 +#: fpdb.pyw:637 msgid "Please confirm that you want to rebuild the database indexes." msgstr "" "Kérlek erősítsd meg, hogy valóban újra akarod építeni az adatbázis indexeit." -#: fpdb.pyw:644 +#: fpdb.pyw:645 msgid " Rebuilding Indexes ... " msgstr " Indexek újraépítése ... " -#: fpdb.pyw:651 +#: fpdb.pyw:652 msgid " Cleaning Database ... " msgstr " Adatbázis tisztítása ... " -#: fpdb.pyw:656 +#: fpdb.pyw:657 msgid " Analyzing Database ... " msgstr " Adatbázis elemzése ... " -#: fpdb.pyw:661 +#: fpdb.pyw:662 msgid "User cancelled rebuilding db indexes" msgstr "A felhasználó megszakította az adatbázis indexeinek újraépítését." -#: fpdb.pyw:756 +#: fpdb.pyw:757 msgid "" "Unimplemented: Save Profile (try saving a HUD layout, that should do it)" msgstr "" "Még nincs kész: Profil mentése (addig használd a HUD elrendezésének " "mentését, az jó)" -#: fpdb.pyw:759 -msgid "Fatal Error - Config File Missing" -msgstr "Végzetes hiba - Hiányzó konfigurációs fájl" - -#: fpdb.pyw:761 -msgid "Please copy the config file from the docs folder to:" -msgstr "Kérlek másold át a konfigurációs fájlt a docs könyvtárból ide:" - -#: fpdb.pyw:769 -msgid "" -"and edit it according to the install documentation at http://fpdb." -"sourceforge.net" -msgstr "" -"majd szerkeszd a http://fpdb.sourceforge.net címen található telepítési " -"útmutató szerint" - -#: fpdb.pyw:825 +#: fpdb.pyw:808 msgid "_Main" msgstr "Fő_menü" -#: fpdb.pyw:826 fpdb.pyw:853 +#: fpdb.pyw:809 fpdb.pyw:836 msgid "_Quit" msgstr "_Kilépés" -#: fpdb.pyw:827 +#: fpdb.pyw:810 msgid "L" msgstr "L" -#: fpdb.pyw:827 +#: fpdb.pyw:810 msgid "_Load Profile (broken)" msgstr "Profil betö_ltése (hibás)" -#: fpdb.pyw:828 +#: fpdb.pyw:811 msgid "S" msgstr "S" -#: fpdb.pyw:828 +#: fpdb.pyw:811 msgid "_Save Profile (todo)" msgstr "Profil menté_se (todo)" -#: fpdb.pyw:829 +#: fpdb.pyw:812 msgid "F" msgstr "B" -#: fpdb.pyw:829 +#: fpdb.pyw:812 msgid "Pre_ferences" msgstr "_Beállítások" -#: fpdb.pyw:830 +#: fpdb.pyw:813 msgid "_Import" msgstr "_Importálás" -#: fpdb.pyw:831 +#: fpdb.pyw:814 msgid "B" msgstr "I" -#: fpdb.pyw:832 +#: fpdb.pyw:815 msgid "I" msgstr "E" -#: fpdb.pyw:832 +#: fpdb.pyw:815 msgid "_Import through eMail/IMAP" msgstr "_Email import (IMAP)" -#: fpdb.pyw:833 +#: fpdb.pyw:816 msgid "_Viewers" msgstr "_Nézetek" -#: fpdb.pyw:834 +#: fpdb.pyw:817 msgid "A" msgstr "A" -#: fpdb.pyw:834 +#: fpdb.pyw:817 msgid "_Auto Import and HUD" msgstr "_AutoImport és HUD" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "H" msgstr "H" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "_HUD Configurator" msgstr "_HUD beállítása" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "G" msgstr "G" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "_Graphs" msgstr "_Grafikonok" -#: fpdb.pyw:837 +#: fpdb.pyw:820 msgid "P" msgstr "P" -#: fpdb.pyw:837 +#: fpdb.pyw:820 msgid "Ring _Player Stats (tabulated view, not on pgsql)" msgstr "Kész_pénzes statisztikák (táblázat; Postgre-vel nem)" -#: fpdb.pyw:838 +#: fpdb.pyw:821 msgid "T" msgstr "T" -#: fpdb.pyw:838 +#: fpdb.pyw:821 msgid "_Tourney Player Stats (tabulated view, not on pgsql)" msgstr "Versenyjá_tékos statisztikák (táblázat; Postgre-vel nem)" -#: fpdb.pyw:839 +#: fpdb.pyw:822 msgid "Tourney _Viewer" msgstr "_Verseny nézet" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "O" msgstr "O" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "P_ositional Stats (tabulated view, not on sqlite)" msgstr "P_ozíciós statisztikák (táblázat; SQLite-tal nem)" -#: fpdb.pyw:841 fpdb.pyw:1057 +#: fpdb.pyw:824 fpdb.pyw:1039 msgid "Session Stats" msgstr "Session statisztikák" -#: fpdb.pyw:842 +#: fpdb.pyw:825 msgid "_Database" msgstr "A_datbázis" -#: fpdb.pyw:843 +#: fpdb.pyw:826 msgid "_Maintain Databases" msgstr "_Karbantartás" -#: fpdb.pyw:844 +#: fpdb.pyw:827 msgid "Create or Recreate _Tables" msgstr "_Táblák (újra) létrehozása" -#: fpdb.pyw:845 +#: fpdb.pyw:828 msgid "Rebuild HUD Cache" msgstr "HUD gyorstár újraépítése" -#: fpdb.pyw:846 +#: fpdb.pyw:829 msgid "Rebuild DB Indexes" msgstr "Adatbázis indexek újraépítése" -#: fpdb.pyw:847 +#: fpdb.pyw:830 msgid "_Statistics" msgstr "_Statisztikák" -#: fpdb.pyw:848 +#: fpdb.pyw:831 msgid "Dump Database to Textfile (takes ALOT of time)" msgstr "Adatbázis kiírása textfájlba (SOKÁIG tart)" -#: fpdb.pyw:849 +#: fpdb.pyw:832 msgid "_Help" msgstr "_Súgó" -#: fpdb.pyw:850 +#: fpdb.pyw:833 msgid "_Log Messages" msgstr "Nap_lóbejegyzések" -#: fpdb.pyw:851 +#: fpdb.pyw:834 msgid "A_bout, License, Copying" msgstr "_Névjegy, licensz, másolás" -#: fpdb.pyw:869 +#: fpdb.pyw:852 msgid "There is an error in your config file\n" msgstr "Hiba van a konfigurációs fájlodban\n" -#: fpdb.pyw:870 +#: fpdb.pyw:853 msgid "" "\n" "\n" @@ -2942,19 +3001,19 @@ msgstr "" "\n" "A hiba a következő: " -#: fpdb.pyw:871 +#: fpdb.pyw:854 msgid "CONFIG FILE ERROR" msgstr "KONFIGURÁCIÓS FÁJL HIBA" -#: fpdb.pyw:875 +#: fpdb.pyw:858 msgid "Logfile is %s\n" msgstr "A naplófájl: %s\n" -#: fpdb.pyw:877 +#: fpdb.pyw:860 msgid "Config file" msgstr "Konfigurációs fájl" -#: fpdb.pyw:878 +#: fpdb.pyw:861 msgid "" "has been created at:\n" "%s.\n" @@ -2962,50 +3021,28 @@ msgstr "" "létrehozva itt:\n" "%s.\n" -#: fpdb.pyw:879 -msgid "Edit your screen_name and hand history path in the supported_sites " -msgstr "" -"Állítsd be az asztalnál látható nevedet és a leosztástörténetek helyét a " -"támogatott termek" - -#: fpdb.pyw:880 +#: fpdb.pyw:862 +#, fuzzy msgid "" -"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." msgstr "" "résznél a Beállítások ablakban (Főmenü) mielőtt megpróbálnál leosztásokat " "importálni." -#: fpdb.pyw:902 +#: fpdb.pyw:884 msgid "Connected to SQLite: %s" msgstr "Kapcsolódva az SQLite adatbázishoz: %s" -#: fpdb.pyw:906 -msgid "MySQL client reports: 2002 or 2003 error. Unable to connect - " -msgstr "" -"MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a kapcsolódás " -"- " - -#: fpdb.pyw:907 -msgid "Please check that the MySQL service has been started" -msgstr "Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" - -#: fpdb.pyw:911 -msgid "Postgres client reports: Unable to connect - " -msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " - -#: fpdb.pyw:912 -msgid "Please check that the Postgres service has been started" -msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" - -#: fpdb.pyw:936 +#: fpdb.pyw:918 msgid "Strong Warning - Invalid database version" msgstr "Nyomatékos figyelmeztetés - Érvénytelen adatbázis verzió" -#: fpdb.pyw:938 +#: fpdb.pyw:920 msgid "An invalid DB version or missing tables have been detected." msgstr "Érvénytelen adatbázis verziót vagy hiányzó táblá(ka)t találtam." -#: fpdb.pyw:942 +#: fpdb.pyw:924 msgid "" "This error is not necessarily fatal but it is strongly recommended that you " "recreate the tables by using the Database menu." @@ -3013,7 +3050,7 @@ msgstr "" "Ez a hiba nem feltétlenül végzetes, de erősen javasolt a táblák " "újragenerálása az Adatbázis menü használatával." -#: fpdb.pyw:946 +#: fpdb.pyw:928 msgid "" "Not doing this will likely lead to misbehaviour including fpdb crashes, " "corrupt data etc." @@ -3022,65 +3059,67 @@ msgstr "" "kiléphet, tönkretehet adatokat, stb." # FIXME: would need a different word ordering in Hungarian -#: fpdb.pyw:959 +#: fpdb.pyw:941 msgid "Status: Connected to %s database named %s on host %s" msgstr "" "Állapot: Kapcsolódva a(z) %s adatbázis-kezelő %s nevű adatbázisához a(z) %s " "kiszolgálón" -#: fpdb.pyw:969 +#: fpdb.pyw:951 +#, fuzzy msgid "" "\n" -"Global lock taken by" +"Global lock taken by %s" msgstr "" "\n" "Globális zárolást végzett:" -#: fpdb.pyw:972 +#: fpdb.pyw:954 +#, fuzzy msgid "" "\n" -"Failed to get global lock, it is currently held by" +"Failed to get global lock, it is currently held by %s" msgstr "" "\n" "Globális zárolás meghiúsult, jelenleg már zárolta:" -#: fpdb.pyw:982 +#: fpdb.pyw:964 msgid "Quitting normally" msgstr "Normál kilépés" -#: fpdb.pyw:1006 +#: fpdb.pyw:988 msgid "Global lock released.\n" msgstr "Globális zárolás feloldva.\n" -#: fpdb.pyw:1013 +#: fpdb.pyw:995 msgid "Auto Import" msgstr "AutoImport" -#: fpdb.pyw:1020 +#: fpdb.pyw:1002 msgid "Bulk Import" msgstr "Importálás" -#: fpdb.pyw:1026 +#: fpdb.pyw:1008 msgid "eMail Import" msgstr "Email import" -#: fpdb.pyw:1033 +#: fpdb.pyw:1015 msgid "Ring Player Stats" msgstr "Készpénzes statisztikák" -#: fpdb.pyw:1039 +#: fpdb.pyw:1021 msgid "Tourney Player Stats" msgstr "Versenystatisztikák" -#: fpdb.pyw:1045 +#: fpdb.pyw:1027 msgid "Tourney Viewer" msgstr "Verseny nézet" -#: fpdb.pyw:1051 +#: fpdb.pyw:1033 msgid "Positional Stats" msgstr "Pozíciós statisztikák" -#: fpdb.pyw:1061 +#: fpdb.pyw:1043 msgid "" "Fpdb needs translators!\n" "If you speak another language and have a few minutes or more to spare get in " @@ -3138,38 +3177,40 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" -"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " +"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." -#: fpdb.pyw:1078 +#: fpdb.pyw:1060 msgid "Help" msgstr "Súgó" -#: fpdb.pyw:1085 +#: fpdb.pyw:1067 msgid "Graphs" msgstr "Grafikonok" -#: fpdb.pyw:1137 +#: fpdb.pyw:1119 +#, fuzzy msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " -"in:\n" +"in: %s" msgstr "" "\n" "Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " "fájlokba itt:\n" -#: fpdb.pyw:1166 +#: fpdb.pyw:1148 msgid "fpdb starting ..." msgstr "fpdb indítása ..." -#: fpdb.pyw:1223 +#: fpdb.pyw:1205 msgid "FPDB WARNING" msgstr "FPDB FIGYELMEZTETÉS" -#: fpdb.pyw:1242 +#: fpdb.pyw:1224 +#, fuzzy msgid "" -"WARNING: Unable to find output hh directory %s\n" +"WARNING: Unable to find output hand history directory %s\n" "\n" " Press YES to create this directory, or NO to select a new one." msgstr "" @@ -3178,7 +3219,7 @@ msgstr "" " Kattints az IGEN gombra a könyvtár létrehozásához, vagy a NEM gombra egy " "másik könyvtár választásához." -#: fpdb.pyw:1250 +#: fpdb.pyw:1232 msgid "" "WARNING: Unable to create hand output directory. Importing is not likely to " "work until this is fixed." @@ -3207,7 +3248,8 @@ msgstr "" "pénznem még nem támogatott" #: fpdb_import.py:227 -msgid "Attempted to add non-directory: '%s' as an import directory" +#, fuzzy +msgid "Attempted to add non-directory '%s' as an import directory" msgstr "Nem könyvtár ('%s') megadása importálási könyvtárként" #: fpdb_import.py:237 @@ -3239,11 +3281,13 @@ msgid "No need to rebuild hudcache." msgstr "Nem szükséges a HUD gyorstár újraépítése." #: fpdb_import.py:313 -msgid "sending finish msg qlen =" +#, fuzzy +msgid "sending finish message queue length =" msgstr "befejező üzenet küldése; qlen =" #: fpdb_import.py:439 fpdb_import.py:441 -msgid "Converting " +#, fuzzy +msgid "Converting %s" msgstr "Konvertálás" #: fpdb_import.py:477 @@ -3321,6 +3365,95 @@ msgstr "" "Nem találhatóak a GTK könyvtárak az útvonaladban - telepítsd a GTK-t, vagy " "állítsd be kézzel az útvonalat\n" +#~ msgid "Fatal Error - Config File Missing" +#~ msgstr "Végzetes hiba - Hiányzó konfigurációs fájl" + +#~ msgid "Please copy the config file from the docs folder to:" +#~ msgstr "Kérlek másold át a konfigurációs fájlt a docs könyvtárból ide:" + +#~ msgid "" +#~ "and edit it according to the install documentation at http://fpdb." +#~ "sourceforge.net" +#~ msgstr "" +#~ "majd szerkeszd a http://fpdb.sourceforge.net címen található telepítési " +#~ "útmutató szerint" + +#~ msgid "" +#~ "Please confirm that you want to (re-)create the tables. If there already " +#~ "are tables in the database " +#~ msgstr "" +#~ "Kérlek erősítsd meg, hogy valóban (újra) létre akarod hozni a táblákat. " +#~ "Ha már vannak táblák az adatbázisban (" + +#~ msgid "" +#~ "Postgres Server reports: Access denied. Are your permissions set " +#~ "correctly?" +#~ msgstr "" +#~ "Postgres szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " +#~ "jogosultságaid?" + +#, fuzzy +#~ msgid "Postgres client reports: Unable to connect - " +#~ msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " + +#, fuzzy +#~ msgid "Please check that the Postgres service has been started" +#~ msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" + +#~ msgid "" +#~ "MySQL client reports: 2002 or 2003 error. Unable to connect - Please " +#~ "check that the MySQL service has been started" +#~ msgstr "" +#~ "MySQL kliens jelenti: 2002-es vagy 2003-as hiba. Nem sikerült a " +#~ "kapcsolódás - Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e " +#~ "indítva" + +#~ msgid "" +#~ "Postgres client reports: Unable to connect - Please check that the " +#~ "Postgres service has been started" +#~ msgstr "" +#~ "Postgres kliens jelenti: Nem sikerült a kapcsolódás. .Kérlek ellenőrizd, " +#~ "hogy a Postgres szolgáltatás el van-e indítva" + +#~ msgid "Default" +#~ msgstr "Alapértelmezett" + +#~ msgid "" +#~ "Fake main window, blah blah, blah\n" +#~ "blah, blah" +#~ msgstr "" +#~ "Kamu főablak, bla bla, bla\n" +#~ "bla, bla" + +#~ msgid "Table not found." +#~ msgstr "Az asztal nem található." + +#~ msgid "readBlinds starting" +#~ msgstr "readBlinds indítása" + +#~ msgid "re_postSB failed, hand=" +#~ msgstr "re_postSB nem sikerült, leosztás=" + +#~ msgid "exception getting stat %s for player %s %s" +#~ msgstr "hiba a %s statisztika számításakor %s játékosnál: %s" + +#~ msgid "Stats.do_stat result = %s" +#~ msgstr "Stats.do_stat eredménye = %s" + +#~ msgid "error: %s" +#~ msgstr "hiba: %s" + +#~ msgid "Found unknown table = %s" +#~ msgstr "Ismeretlen asztal = %s" + +#~ msgid "attach to window" +#~ msgstr "csatolás ezen ablakhoz: " + +#~ msgid "Edit your screen_name and hand history path in the supported_sites " +#~ msgstr "" +#~ "Állítsd be az asztalnál látható nevedet és a leosztástörténetek helyét a " +#~ "támogatott termek" + #~ msgid "_Set HandHistory Archive Directory" #~ msgstr "Leo_sztásarchívum könyvtára" diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index 225a4b034c9de3a5e235109041b0d19043fef288..a73df824a2626bf6477eb908db93d0522a0fa3dc 100644 GIT binary patch delta 11462 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 Vled(?71Fsg`1G%cy~jVO{@<-8{VM Date: Sun, 29 Aug 2010 21:10:57 +0200 Subject: [PATCH 333/641] Revert "Revert "gettextify FulltiltToFpdb.py"" This reverts commit a1f079e4479ed7865720c0adc7e4033625943635. --- pyfpdb/FulltiltToFpdb.py | 44 +++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/pyfpdb/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index b235ed4d..f94903c5 100755 --- a/pyfpdb/FulltiltToFpdb.py +++ b/pyfpdb/FulltiltToFpdb.py @@ -18,6 +18,18 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ######################################################################## +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + import logging from HandHistoryConverter import * #import TourneySummary @@ -206,7 +218,7 @@ class Fulltilt(HandHistoryConverter): def readHandInfo(self, hand): m = self.re_HandInfo.search(hand.handText) if m is None: - logging.info("Didn't match re_HandInfo") + logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) raise FpdbParseError("No match in readHandInfo.") hand.handid = m.group('HID') @@ -336,7 +348,7 @@ class Fulltilt(HandHistoryConverter): hand.addBlind(a.group('PNAME'), 'small & big blinds', a.group('SBBB')) def readAntes(self, hand): - logging.debug("reading antes") + logging.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'))) @@ -346,10 +358,10 @@ class Fulltilt(HandHistoryConverter): def readBringIn(self, hand): m = self.re_BringIn.search(hand.handText,re.DOTALL) if m: - logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))) + logging.debug(_("Player bringing in: %s for %s") %(m.group('PNAME'), m.group('BRINGIN'))) hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) else: - logging.warning("No bringin found, handid =%s" % hand.handid) + logging.warning(_("No bringin found, handid =%s") % hand.handid) def readButton(self, hand): hand.buttonpos = int(self.re_Button.search(hand.handText).group('BUTTON')) @@ -406,7 +418,7 @@ class Fulltilt(HandHistoryConverter): elif action.group('ATYPE') == ' checks': hand.addCheck( street, action.group('PNAME')) else: - print "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),) + print _("FullTilt: DEBUG: unimplemented readAction: '%s' '%s'") %(action.group('PNAME'),action.group('ATYPE'),) def readShowdownActions(self, hand): @@ -482,7 +494,7 @@ class Fulltilt(HandHistoryConverter): m = self.re_TourneyInfo.search(tourneyText) if not m: - log.info( "determineTourneyType : Parsing NOK" ) + log.info(_("determineTourneyType : Parsing NOK")) return False mg = m.groupdict() #print mg @@ -540,7 +552,7 @@ class Fulltilt(HandHistoryConverter): if mg['TOURNO'] is not None: tourney.tourNo = mg['TOURNO'] else: - log.info( "Unable to get a valid Tournament ID -- File rejected" ) + log.info(_("Unable to get a valid Tournament ID -- File rejected")) return False if tourney.isMatrix: if mg['MATCHNO'] is not None: @@ -571,18 +583,18 @@ class Fulltilt(HandHistoryConverter): tourney.buyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) else : if 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) != tourney.buyin: - log.error( "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) ) + log.error(_("Conflict between buyins read in topline (%s) and in BuyIn field (%s)") % (tourney.buyin, 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN']))) ) tourney.subTourneyBuyin = 100*Decimal(re.sub(u',', u'', "%s" % mg['BUYIN'])) if mg['FEE'] is not None: if tourney.fee is None: tourney.fee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) else : if 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) != tourney.fee: - log.error( "Conflict between fees read in topline (%s) and in BuyIn field (%s)" % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) ) + log.error(_("Conflict between fees read in topline (%s) and in BuyIn field (%s)") % (tourney.fee, 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE']))) ) tourney.subTourneyFee = 100*Decimal(re.sub(u',', u'', "%s" % mg['FEE'])) if tourney.buyin is None: - log.info( "Unable to affect a buyin to this tournament : assume it's a freeroll" ) + log.info(_("Unable to affect a buyin to this tournament : assume it's a freeroll")) tourney.buyin = 0 tourney.fee = 0 else: @@ -683,7 +695,7 @@ class Fulltilt(HandHistoryConverter): tourney.addPlayer(rank, a.group('PNAME'), winnings, "USD", 0, 0, 0) #TODO: make it store actual winnings currency else: - print "FullTilt: Player finishing stats unreadable : %s" % a + print (_("FullTilt: Player finishing stats unreadable : %s") % a) # Find Hero n = self.re_TourneyHeroFinishingP.search(playersText) @@ -692,17 +704,17 @@ class Fulltilt(HandHistoryConverter): tourney.hero = heroName # Is this really useful ? if heroName not in tourney.ranks: - print "FullTilt:", heroName, "not found in tourney.ranks ..." + print (_("FullTilt: %s not found in tourney.ranks ...") % heroName) elif (tourney.ranks[heroName] != Decimal(n.group('HERO_FINISHING_POS'))): - print "FullTilt: Bad parsing : finish position incoherent : %s / %s" % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS')) + print (_("FullTilt: Bad parsing : finish position incoherent : %s / %s") % (tourney.ranks[heroName], n.group('HERO_FINISHING_POS'))) return True if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.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("-i", "--input", dest="ipath", help=_("parse input hand history"), default="regression-test-files/fulltilt/razz/FT20090223 Danville - $0.50-$1 Ante $0.10 - Limit Razz.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", From 21c1e3340520e16bf0e2890fa212f2c050a7b1ec Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 21:17:58 +0200 Subject: [PATCH 334/641] l10n: missed gettextifying a string in betfairtofpdb --- pyfpdb/BetfairToFpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index 07ee2612..5ee3823f 100755 --- a/pyfpdb/BetfairToFpdb.py +++ b/pyfpdb/BetfairToFpdb.py @@ -127,7 +127,7 @@ class Betfair(HandHistoryConverter): #Shouldn't really dip into the Hand object, but i've no idea how to tell the length of iter m if len(hand.players) < 2: - logging.info("readPlayerStacks: Less than 2 players found in a hand") + logging.info(_("readPlayerStacks: Less than 2 players found in a hand")) def markStreets(self, hand): m = re.search(r"\*\* Dealing down cards \*\*(?P.+(?=\*\* Dealing Flop \*\*)|.+)" From 772f124a295c34a0d2663a8d0392bbf0e711967f Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 21:22:34 +0200 Subject: [PATCH 335/641] l10n: gettextify everleaftofpdb --- pyfpdb/EverleafToFpdb.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/pyfpdb/EverleafToFpdb.py b/pyfpdb/EverleafToFpdb.py index 8bff1cdd..fdded3f6 100755 --- a/pyfpdb/EverleafToFpdb.py +++ b/pyfpdb/EverleafToFpdb.py @@ -22,6 +22,18 @@ import sys import logging from HandHistoryConverter import * +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + # Class for converting Everleaf HH format. class Everleaf(HandHistoryConverter): @@ -133,7 +145,7 @@ or None if we fail to get the info """ def readHandInfo(self, hand): m = self.re_HandInfo.search(hand.handText) if(m == None): - logging.info("Didn't match re_HandInfo") + logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) return None logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) @@ -202,7 +214,7 @@ or None if we fail to get the info """ hand.setCommunityCards(street=street, cards=cards) def readAntes(self, hand): - logging.debug("reading antes") + logging.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'))) @@ -214,14 +226,14 @@ or None if we fail to get the info """ logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))) hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) else: - logging.warning("No bringin found.") + logging.warning(_("No bringin found.")) def readBlinds(self, hand): m = self.re_PostSB.search(hand.handText) if m is not None: hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB')) else: - logging.debug("No small blind") + logging.debug(_("No small blind")) hand.addBlind(None, None, None) for a in self.re_PostBB.finditer(hand.handText): hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB')) @@ -249,7 +261,7 @@ or None if we fail to get the info """ def readStudPlayerCards(self, hand, street): # lol. see Plymouth.txt - logging.warning("Everleaf readStudPlayerCards is only a stub.") + logging.warning(_("Everleaf readStudPlayerCards is only a stub.")) #~ if street in ('THIRD', 'FOURTH', 'FIFTH', 'SIXTH'): #~ hand.addPlayerCards(player = player.group('PNAME'), street = street, closed = [], open = []) @@ -272,7 +284,7 @@ or None if we fail to get the info """ elif action.group('ATYPE') == ' complete to': hand.addComplete( street, action.group('PNAME'), action.group('BET')) else: - logging.debug("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),)) + logging.debug(_("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),))) def readShowdownActions(self, hand): @@ -310,9 +322,9 @@ or None if we fail to get the info """ if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-") - 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("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-") + 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", From 4cae54a08644055339a7ff5bf1d085cc21fadfcf Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 21:22:46 +0200 Subject: [PATCH 336/641] l10n: another missed gettextify in betfairtofpdb --- pyfpdb/BetfairToFpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index 5ee3823f..ab870a27 100755 --- a/pyfpdb/BetfairToFpdb.py +++ b/pyfpdb/BetfairToFpdb.py @@ -164,7 +164,7 @@ class Betfair(HandHistoryConverter): def readBringIn(self, hand): m = self.re_BringIn.search(hand.handText,re.DOTALL) if m: - logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))) + logging.debug(_("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))) hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) else: logging.warning(_("No bringin found")) From 62fb2f91867edf1b901d11d4b5893ac0cb546e69 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 21:24:28 +0200 Subject: [PATCH 337/641] l10n: missed a gettextify in everleaftofpdb --- pyfpdb/EverleafToFpdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/EverleafToFpdb.py b/pyfpdb/EverleafToFpdb.py index fdded3f6..1b27c555 100755 --- a/pyfpdb/EverleafToFpdb.py +++ b/pyfpdb/EverleafToFpdb.py @@ -293,7 +293,7 @@ or None if we fail to get the info """ for shows in self.re_ShowdownAction.finditer(hand.handText): cards = shows.group('CARDS') cards = cards.split(', ') - logging.debug("readShowdownActions %s %s" %(cards, shows.group('PNAME'))) + logging.debug(_("readShowdownActions %s %s" %(cards, shows.group('PNAME')))) hand.addShownCards(cards, shows.group('PNAME')) From 3c645b0e431d2781eb7314856fe3a61a268ec548 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 21:29:18 +0200 Subject: [PATCH 338/641] l10n: gettextify carbontofpdb --- pyfpdb/CarbonToFpdb.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyfpdb/CarbonToFpdb.py b/pyfpdb/CarbonToFpdb.py index 9239ab12..49523ba6 100644 --- a/pyfpdb/CarbonToFpdb.py +++ b/pyfpdb/CarbonToFpdb.py @@ -148,7 +148,7 @@ or None if we fail to get the info """ def readHandInfo(self, hand): m = self.re_HandInfo.search(hand.handText) if m is None: - logging.info("Didn't match re_HandInfo") + logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) return None logging.debug("HID %s-%s, Table %s" % (m.group('HID1'), @@ -254,8 +254,8 @@ or None if we fail to get the info """ elif action.group('ATYPE') == 'ALL_IN': hand.addAllIn(street, player, action.group('BET')) else: - logging.debug("Unimplemented readAction: %s %s" - % (action.group('PSEAT'),action.group('ATYPE'),)) + logging.debug(_("Unimplemented readAction: %s %s" + % (action.group('PSEAT'),action.group('ATYPE'),))) def readShowdownActions(self, hand): for shows in self.re_ShowdownAction.finditer(hand.handText): @@ -285,9 +285,9 @@ or None if we fail to get the info """ if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-") - 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("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-") + 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") From 2eb3d18b86409677512b62c612800b79149c7da9 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 21:31:34 +0200 Subject: [PATCH 339/641] l10n: gettextify AbsoluteToFpdb --- pyfpdb/AbsoluteToFpdb.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pyfpdb/AbsoluteToFpdb.py b/pyfpdb/AbsoluteToFpdb.py index 31e21764..7cef8c68 100755 --- a/pyfpdb/AbsoluteToFpdb.py +++ b/pyfpdb/AbsoluteToFpdb.py @@ -164,7 +164,7 @@ class Absolute(HandHistoryConverter): def readHandInfo(self, hand): m = self.re_HandInfo.search(hand.handText) if(m == None): - logging.info("Didn't match re_HandInfo") + logging.info(_("Didn't match re_HandInfo")) logging.info(hand.handText) return None logging.debug("HID %s, Table %s" % (m.group('HID'), m.group('TABLE'))) @@ -221,7 +221,7 @@ class Absolute(HandHistoryConverter): hand.setCommunityCards(street=street, cards=cards) def readAntes(self, hand): - logging.debug("reading antes") + logging.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'))) @@ -230,17 +230,17 @@ class Absolute(HandHistoryConverter): def readBringIn(self, hand): m = self.re_BringIn.search(hand.handText,re.DOTALL) if m: - logging.debug("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN'))) + logging.debug(_("Player bringing in: %s for %s" %(m.group('PNAME'), m.group('BRINGIN')))) hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) else: - logging.warning("No bringin found.") + logging.warning(_("No bringin found.")) def readBlinds(self, hand): m = self.re_PostSB.search(hand.handText) if m is not None: hand.addBlind(m.group('PNAME'), 'small blind', m.group('SB')) else: - logging.debug("No small blind") + logging.debug(_("No small blind")) hand.addBlind(None, None, None) for a in self.re_PostBB.finditer(hand.handText): hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB')) @@ -267,7 +267,7 @@ class Absolute(HandHistoryConverter): def readStudPlayerCards(self, hand, street): # lol. see Plymouth.txt - logging.warning("Absolute readStudPlayerCards is only a stub.") + logging.warning(_("Absolute readStudPlayerCards is only a stub.")) #~ if street in ('THIRD', 'FOURTH', 'FIFTH', 'SIXTH'): #~ hand.addPlayerCards(player = player.group('PNAME'), street = street, closed = [], open = []) @@ -290,7 +290,7 @@ class Absolute(HandHistoryConverter): elif action.group('ATYPE') == ' complete to': # TODO: not supported yet ? hand.addComplete( street, action.group('PNAME'), action.group('BET')) else: - logging.debug("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),)) + logging.debug(_("Unimplemented readAction: %s %s" %(action.group('PNAME'),action.group('ATYPE'),))) def readShowdownActions(self, hand): @@ -334,9 +334,9 @@ if __name__ == "__main__": config = Configuration.Config(None) parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-") - 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("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-") + 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", From 7a4eeba3c7396c473db4b6e98c39e5381c4eb5be Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 21:33:03 +0200 Subject: [PATCH 340/641] l10n: gettexify Win2dayToFpdb --- pyfpdb/Win2dayToFpdb.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyfpdb/Win2dayToFpdb.py b/pyfpdb/Win2dayToFpdb.py index dd3d922e..47891f0f 100755 --- a/pyfpdb/Win2dayToFpdb.py +++ b/pyfpdb/Win2dayToFpdb.py @@ -153,7 +153,7 @@ class Win2day(HandHistoryConverter): hand.buttonpos = player[0] break else: - logging.info('readButton: not found') + logging.info(_('readButton: not found')) def readPlayerStacks(self, hand): logging.debug("readPlayerStacks") @@ -194,7 +194,7 @@ class Win2day(HandHistoryConverter): hand.setCommunityCards(street, boardCards) def readAntes(self, hand): - logging.debug("reading antes") + logging.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'))) @@ -332,7 +332,7 @@ class Win2day(HandHistoryConverter): elif action.group('ATYPE') == 'ACTION_STAND': hand.addStandsPat( street, action.group('PNAME')) else: - print "DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),) + print _("DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),)) def readShowdownActions(self, hand): @@ -359,9 +359,9 @@ class Win2day(HandHistoryConverter): if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="-") - 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("-i", "--input", dest="ipath", help=_("parse input hand history"), default="-") + 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", From 717968e8bfeb8d079450a88de168db26fbf57714 Mon Sep 17 00:00:00 2001 From: gimick Date: Sun, 29 Aug 2010 20:55:40 +0100 Subject: [PATCH 341/641] Logging: Relocate info message from hud-errors to hud-log --- pyfpdb/Hud.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index 99b65c00..8454f433 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -586,7 +586,7 @@ class Hud: self.stat_dict = stat_dict self.cards = cards - sys.stderr.write(_("------------------------------------------------------------\nCreating hud from hand %s\n") % hand) + log.info(_('Creating hud from hand ')+str(hand)) adj = self.adj_seats(hand, config) loc = self.config.get_locations(self.table.site, self.max) if loc is None and self.max != 10: From 9a3782c64d9dfc52ad24eea8d81de67ff9104375 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 22:07:58 +0200 Subject: [PATCH 342/641] l10n: last file gettextified: UltimateBetToFpdb --- pyfpdb/UltimateBetToFpdb.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pyfpdb/UltimateBetToFpdb.py b/pyfpdb/UltimateBetToFpdb.py index acf29b06..580244bb 100755 --- a/pyfpdb/UltimateBetToFpdb.py +++ b/pyfpdb/UltimateBetToFpdb.py @@ -39,7 +39,7 @@ in_path (default '-' = sys.stdin) out_path (default '-' = sys.stdout) follow : whether to tail -f the input""" HandHistoryConverter.__init__(self, in_path, out_path, sitename="UltimateBet", follow=follow, index=index) - logging.info("Initialising UltimateBetconverter class") + logging.info(_("Initialising UltimateBetconverter class")) self.filetype = "text" self.codepage = "cp1252" self.siteId = 6 # Needs to match id entry in Sites database @@ -141,7 +141,7 @@ follow : whether to tail -f the input""" if m: hand.buttonpos = int(m.group('BUTTON')) else: - logging.info('readButton: not found') + logging.info(_('readButton: not found')) def readPlayerStacks(self, hand): logging.debug("readPlayerStacks") @@ -180,7 +180,7 @@ follow : whether to tail -f the input""" hand.setCommunityCards(street, m.group('CARDS').split(' ')) def readAntes(self, hand): - logging.debug("reading antes") + logging.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'))) @@ -290,7 +290,7 @@ follow : whether to tail -f the input""" #elif action.group('ATYPE') == ' stands pat': # hand.addStandsPat( street, action.group('PNAME')) else: - print "DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),) + print _("DEBUG: unimplemented readAction: '%s' '%s'" %(action.group('PNAME'),action.group('ATYPE'),)) def readShowdownActions(self, hand): @@ -312,9 +312,9 @@ follow : whether to tail -f the input""" if __name__ == "__main__": parser = OptionParser() - parser.add_option("-i", "--input", dest="ipath", help="parse input hand history", default="regression-test-files/pokerstars/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("-i", "--input", dest="ipath", help=_("parse input hand history"), default="regression-test-files/pokerstars/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", From af0aff530d66adb51ce322f10839b4102fd8074e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 29 Aug 2010 22:09:22 +0200 Subject: [PATCH 343/641] l10n: update pot/po/mo files --- pyfpdb/locale/de/LC_MESSAGES/fpdb.mo | Bin 20424 -> 20424 bytes pyfpdb/locale/fpdb-de_DE.po | 119 +++++++++++++++++++++----- pyfpdb/locale/fpdb-en_GB.pot | 116 ++++++++++++++++++++----- pyfpdb/locale/fpdb-hu_HU.po | 121 ++++++++++++++++++++++----- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 59291 -> 59291 bytes 5 files changed, 297 insertions(+), 59 deletions(-) diff --git a/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo index ae007611f0d5cdb7fd5668fce4dc3508fb32db9a..5b67149b32a449e4d703768bf8d5603198bc4a95 100644 GIT binary patch delta 19 bcmX>xpYgxpYg\n" "Language-Team: Fpdb\n" @@ -15,6 +15,47 @@ msgstr "" "X-Generator: Virtaal 0.6.1\n" "Generated-By: pygettext.py 1.5\n" +#: AbsoluteToFpdb.py:167 BetfairToFpdb.py:114 CarbonToFpdb.py:151 +#: EverleafToFpdb.py:148 FulltiltToFpdb.py:221 +msgid "Didn't match re_HandInfo" +msgstr "" + +#: AbsoluteToFpdb.py:224 EverleafToFpdb.py:217 FulltiltToFpdb.py:351 +#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 UltimateBetToFpdb.py:183 +#: Win2dayToFpdb.py:197 +msgid "reading antes" +msgstr "" + +#: AbsoluteToFpdb.py:236 EverleafToFpdb.py:229 +msgid "No bringin found." +msgstr "" + +#: AbsoluteToFpdb.py:243 EverleafToFpdb.py:236 +msgid "No small blind" +msgstr "" + +#: AbsoluteToFpdb.py:270 +msgid "Absolute readStudPlayerCards is only a stub." +msgstr "" + +#: AbsoluteToFpdb.py:337 BetfairToFpdb.py:229 CarbonToFpdb.py:288 +#: EverleafToFpdb.py:325 FulltiltToFpdb.py:715 PartyPokerToFpdb.py:525 +#: PokerStarsToFpdb.py:468 UltimateBetToFpdb.py:315 Win2dayToFpdb.py:362 +msgid "parse input hand history" +msgstr "" + +#: AbsoluteToFpdb.py:338 BetfairToFpdb.py:230 CarbonToFpdb.py:289 +#: EverleafToFpdb.py:326 FulltiltToFpdb.py:716 PartyPokerToFpdb.py:526 +#: PokerStarsToFpdb.py:469 UltimateBetToFpdb.py:316 Win2dayToFpdb.py:363 +msgid "output translation to" +msgstr "" + +#: AbsoluteToFpdb.py:339 BetfairToFpdb.py:231 CarbonToFpdb.py:290 +#: EverleafToFpdb.py:327 FulltiltToFpdb.py:717 PartyPokerToFpdb.py:527 +#: PokerStarsToFpdb.py:470 UltimateBetToFpdb.py:317 Win2dayToFpdb.py:364 +msgid "follow (tail -f) the input" +msgstr "" + #: Anonymise.py:55 msgid "Could not find file %s" msgstr "Konnte Datei %s nicht finden" @@ -27,8 +68,8 @@ msgstr "" msgid "GameInfo regex did not match" msgstr "" -#: BetfairToFpdb.py:114 -msgid "Didn't match re_HandInfo" +#: BetfairToFpdb.py:130 +msgid "readPlayerStacks: Less than 2 players found in a hand" msgstr "" #: BetfairToFpdb.py:170 @@ -39,18 +80,6 @@ msgstr "" msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "" -#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:525 PokerStarsToFpdb.py:468 -msgid "parse input hand history" -msgstr "" - -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:526 PokerStarsToFpdb.py:469 -msgid "output translation to" -msgstr "" - -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:527 PokerStarsToFpdb.py:470 -msgid "follow (tail -f) the input" -msgstr "" - #: Card.py:167 msgid "fpdb card encoding(same as pokersource)" msgstr "" @@ -76,7 +105,8 @@ msgstr "" #: Configuration.py:135 Configuration.py:136 msgid "Error copying .example config file, cannot fall back. Exiting.\n" -msgstr "Fehler beim Kopieren der .example Konfigurationsdatei, Fallback " +msgstr "" +"Fehler beim Kopieren der .example Konfigurationsdatei, Fallback " "fehlgeschlagen. Beende fpdb.\n" #: Configuration.py:140 Configuration.py:141 @@ -459,6 +489,10 @@ msgstr "" msgid "press enter to continue" msgstr "" +#: EverleafToFpdb.py:264 +msgid "Everleaf readStudPlayerCards is only a stub." +msgstr "" + #: Filters.py:62 msgid "All" msgstr "Alle" @@ -603,6 +637,50 @@ msgstr "Wählen Sie ein Datum" msgid "Done" msgstr "Fertig" +#: FulltiltToFpdb.py:361 +msgid "Player bringing in: %s for %s" +msgstr "" + +#: FulltiltToFpdb.py:364 +msgid "No bringin found, handid =%s" +msgstr "" + +#: FulltiltToFpdb.py:421 +msgid "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" +msgstr "" + +#: FulltiltToFpdb.py:497 +msgid "determineTourneyType : Parsing NOK" +msgstr "" + +#: FulltiltToFpdb.py:555 +msgid "Unable to get a valid Tournament ID -- File rejected" +msgstr "" + +#: FulltiltToFpdb.py:586 +msgid "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" +msgstr "" + +#: FulltiltToFpdb.py:593 +msgid "Conflict between fees read in topline (%s) and in BuyIn field (%s)" +msgstr "" + +#: FulltiltToFpdb.py:597 +msgid "Unable to affect a buyin to this tournament : assume it's a freeroll" +msgstr "" + +#: FulltiltToFpdb.py:698 +msgid "FullTilt: Player finishing stats unreadable : %s" +msgstr "" + +#: FulltiltToFpdb.py:707 +msgid "FullTilt: %s not found in tourney.ranks ..." +msgstr "" + +#: FulltiltToFpdb.py:709 +msgid "FullTilt: Bad parsing : finish position incoherent : %s / %s" +msgstr "" + #: GuiAutoImport.py:85 msgid "Time between imports in seconds:" msgstr "Zeit zwischen Imports in Sekunden:" @@ -1968,6 +2046,7 @@ msgid "limit not found in self.limits(%s). hand: '%s'" msgstr "" #: OnGameToFpdb.py:268 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:321 +#: UltimateBetToFpdb.py:144 Win2dayToFpdb.py:156 msgid "readButton: not found" msgstr "" @@ -1975,10 +2054,6 @@ msgstr "" msgid "readBlinds in noSB exception - no SB created" msgstr "" -#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 -msgid "reading antes" -msgstr "" - #: Options.py:40 msgid "If passed error output will go to the console rather than ." msgstr "" @@ -2467,6 +2542,10 @@ msgstr "" msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" msgstr "" +#: UltimateBetToFpdb.py:42 +msgid "Initialising UltimateBetconverter class" +msgstr "" + #: WinTables.py:82 msgid "Window %s not found. Skipping." msgstr "" diff --git a/pyfpdb/locale/fpdb-en_GB.pot b/pyfpdb/locale/fpdb-en_GB.pot index ba73641a..71ec500e 100644 --- a/pyfpdb/locale/fpdb-en_GB.pot +++ b/pyfpdb/locale/fpdb-en_GB.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-29 20:45+CEST\n" +"POT-Creation-Date: 2010-08-29 22:08+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,6 +15,47 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" +#: AbsoluteToFpdb.py:167 BetfairToFpdb.py:114 CarbonToFpdb.py:151 +#: EverleafToFpdb.py:148 FulltiltToFpdb.py:221 +msgid "Didn't match re_HandInfo" +msgstr "" + +#: AbsoluteToFpdb.py:224 EverleafToFpdb.py:217 FulltiltToFpdb.py:351 +#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 UltimateBetToFpdb.py:183 +#: Win2dayToFpdb.py:197 +msgid "reading antes" +msgstr "" + +#: AbsoluteToFpdb.py:236 EverleafToFpdb.py:229 +msgid "No bringin found." +msgstr "" + +#: AbsoluteToFpdb.py:243 EverleafToFpdb.py:236 +msgid "No small blind" +msgstr "" + +#: AbsoluteToFpdb.py:270 +msgid "Absolute readStudPlayerCards is only a stub." +msgstr "" + +#: AbsoluteToFpdb.py:337 BetfairToFpdb.py:229 CarbonToFpdb.py:288 +#: EverleafToFpdb.py:325 FulltiltToFpdb.py:715 PartyPokerToFpdb.py:525 +#: PokerStarsToFpdb.py:468 UltimateBetToFpdb.py:315 Win2dayToFpdb.py:362 +msgid "parse input hand history" +msgstr "" + +#: AbsoluteToFpdb.py:338 BetfairToFpdb.py:230 CarbonToFpdb.py:289 +#: EverleafToFpdb.py:326 FulltiltToFpdb.py:716 PartyPokerToFpdb.py:526 +#: PokerStarsToFpdb.py:469 UltimateBetToFpdb.py:316 Win2dayToFpdb.py:363 +msgid "output translation to" +msgstr "" + +#: AbsoluteToFpdb.py:339 BetfairToFpdb.py:231 CarbonToFpdb.py:290 +#: EverleafToFpdb.py:327 FulltiltToFpdb.py:717 PartyPokerToFpdb.py:527 +#: PokerStarsToFpdb.py:470 UltimateBetToFpdb.py:317 Win2dayToFpdb.py:364 +msgid "follow (tail -f) the input" +msgstr "" + #: Anonymise.py:55 msgid "Could not find file %s" msgstr "" @@ -27,8 +68,8 @@ msgstr "" msgid "GameInfo regex did not match" msgstr "" -#: BetfairToFpdb.py:114 -msgid "Didn't match re_HandInfo" +#: BetfairToFpdb.py:130 +msgid "readPlayerStacks: Less than 2 players found in a hand" msgstr "" #: BetfairToFpdb.py:170 @@ -39,18 +80,6 @@ msgstr "" msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "" -#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:525 PokerStarsToFpdb.py:468 -msgid "parse input hand history" -msgstr "" - -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:526 PokerStarsToFpdb.py:469 -msgid "output translation to" -msgstr "" - -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:527 PokerStarsToFpdb.py:470 -msgid "follow (tail -f) the input" -msgstr "" - #: Card.py:167 msgid "fpdb card encoding(same as pokersource)" msgstr "" @@ -457,6 +486,10 @@ msgstr "" msgid "press enter to continue" msgstr "" +#: EverleafToFpdb.py:264 +msgid "Everleaf readStudPlayerCards is only a stub." +msgstr "" + #: Filters.py:62 msgid "All" msgstr "" @@ -601,6 +634,50 @@ msgstr "" msgid "Done" msgstr "" +#: FulltiltToFpdb.py:361 +msgid "Player bringing in: %s for %s" +msgstr "" + +#: FulltiltToFpdb.py:364 +msgid "No bringin found, handid =%s" +msgstr "" + +#: FulltiltToFpdb.py:421 +msgid "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" +msgstr "" + +#: FulltiltToFpdb.py:497 +msgid "determineTourneyType : Parsing NOK" +msgstr "" + +#: FulltiltToFpdb.py:555 +msgid "Unable to get a valid Tournament ID -- File rejected" +msgstr "" + +#: FulltiltToFpdb.py:586 +msgid "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" +msgstr "" + +#: FulltiltToFpdb.py:593 +msgid "Conflict between fees read in topline (%s) and in BuyIn field (%s)" +msgstr "" + +#: FulltiltToFpdb.py:597 +msgid "Unable to affect a buyin to this tournament : assume it's a freeroll" +msgstr "" + +#: FulltiltToFpdb.py:698 +msgid "FullTilt: Player finishing stats unreadable : %s" +msgstr "" + +#: FulltiltToFpdb.py:707 +msgid "FullTilt: %s not found in tourney.ranks ..." +msgstr "" + +#: FulltiltToFpdb.py:709 +msgid "FullTilt: Bad parsing : finish position incoherent : %s / %s" +msgstr "" + #: GuiAutoImport.py:85 msgid "Time between imports in seconds:" msgstr "" @@ -1929,6 +2006,7 @@ msgid "limit not found in self.limits(%s). hand: '%s'" msgstr "" #: OnGameToFpdb.py:268 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:321 +#: UltimateBetToFpdb.py:144 Win2dayToFpdb.py:156 msgid "readButton: not found" msgstr "" @@ -1936,10 +2014,6 @@ msgstr "" msgid "readBlinds in noSB exception - no SB created" msgstr "" -#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 -msgid "reading antes" -msgstr "" - #: Options.py:40 msgid "If passed error output will go to the console rather than ." msgstr "" @@ -2428,6 +2502,10 @@ msgstr "" msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" msgstr "" +#: UltimateBetToFpdb.py:42 +msgid "Initialising UltimateBetconverter class" +msgstr "" + #: WinTables.py:82 msgid "Window %s not found. Skipping." msgstr "" diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index 2c2ea758..bc8be173 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-29 20:42+CEST\n" +"POT-Creation-Date: 2010-08-29 22:08+CEST\n" "PO-Revision-Date: 2010-08-29 14:25+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" @@ -16,6 +16,48 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" "Plural-Forms: nplurals=2; plural=n !=1;\n" +#: AbsoluteToFpdb.py:167 BetfairToFpdb.py:114 CarbonToFpdb.py:151 +#: EverleafToFpdb.py:148 FulltiltToFpdb.py:221 +msgid "Didn't match re_HandInfo" +msgstr "re_HandInfo nem illeszkedik" + +#: AbsoluteToFpdb.py:224 EverleafToFpdb.py:217 FulltiltToFpdb.py:351 +#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 UltimateBetToFpdb.py:183 +#: Win2dayToFpdb.py:197 +msgid "reading antes" +msgstr "antek olvasása" + +#: AbsoluteToFpdb.py:236 EverleafToFpdb.py:229 +#, fuzzy +msgid "No bringin found." +msgstr "Beülő nem található" + +#: AbsoluteToFpdb.py:243 EverleafToFpdb.py:236 +msgid "No small blind" +msgstr "" + +#: AbsoluteToFpdb.py:270 +msgid "Absolute readStudPlayerCards is only a stub." +msgstr "" + +#: AbsoluteToFpdb.py:337 BetfairToFpdb.py:229 CarbonToFpdb.py:288 +#: EverleafToFpdb.py:325 FulltiltToFpdb.py:715 PartyPokerToFpdb.py:525 +#: PokerStarsToFpdb.py:468 UltimateBetToFpdb.py:315 Win2dayToFpdb.py:362 +msgid "parse input hand history" +msgstr "leosztástörténet feldolgozása" + +#: AbsoluteToFpdb.py:338 BetfairToFpdb.py:230 CarbonToFpdb.py:289 +#: EverleafToFpdb.py:326 FulltiltToFpdb.py:716 PartyPokerToFpdb.py:526 +#: PokerStarsToFpdb.py:469 UltimateBetToFpdb.py:316 Win2dayToFpdb.py:363 +msgid "output translation to" +msgstr "feldolgozás eredményének helye" + +#: AbsoluteToFpdb.py:339 BetfairToFpdb.py:231 CarbonToFpdb.py:290 +#: EverleafToFpdb.py:327 FulltiltToFpdb.py:717 PartyPokerToFpdb.py:527 +#: PokerStarsToFpdb.py:470 UltimateBetToFpdb.py:317 Win2dayToFpdb.py:364 +msgid "follow (tail -f) the input" +msgstr "kövesse a kimenetet (tail -f)" + #: Anonymise.py:55 msgid "Could not find file %s" msgstr "%s fájl nem található" @@ -28,9 +70,9 @@ msgstr "Az eredmény ide került kiírásra" msgid "GameInfo regex did not match" msgstr "GameInfo regex nem illeszkedik" -#: BetfairToFpdb.py:114 -msgid "Didn't match re_HandInfo" -msgstr "re_HandInfo nem illeszkedik" +#: BetfairToFpdb.py:130 +msgid "readPlayerStacks: Less than 2 players found in a hand" +msgstr "" #: BetfairToFpdb.py:170 msgid "No bringin found" @@ -40,18 +82,6 @@ msgstr "Beülő nem található" msgid "DEBUG: unimplemented readAction: '%s' '%s'" msgstr "DEBUG: nem ismert readAction: '%s' '%s'" -#: BetfairToFpdb.py:229 PartyPokerToFpdb.py:525 PokerStarsToFpdb.py:468 -msgid "parse input hand history" -msgstr "leosztástörténet feldolgozása" - -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:526 PokerStarsToFpdb.py:469 -msgid "output translation to" -msgstr "feldolgozás eredményének helye" - -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:527 PokerStarsToFpdb.py:470 -msgid "follow (tail -f) the input" -msgstr "kövesse a kimenetet (tail -f)" - #: Card.py:167 msgid "fpdb card encoding(same as pokersource)" msgstr "fpdb kártyakódolás (ugyanaz, mint amit a pokersource használ)" @@ -484,6 +514,10 @@ msgstr "get_stats időigény: %4.3f mp" msgid "press enter to continue" msgstr "nyomj ENTER-t a folytatáshoz" +#: EverleafToFpdb.py:264 +msgid "Everleaf readStudPlayerCards is only a stub." +msgstr "" + #: Filters.py:62 msgid "All" msgstr "Mind" @@ -629,6 +663,52 @@ msgstr "Válassz napot" msgid "Done" msgstr "Kész" +#: FulltiltToFpdb.py:361 +msgid "Player bringing in: %s for %s" +msgstr "" + +#: FulltiltToFpdb.py:364 +#, fuzzy +msgid "No bringin found, handid =%s" +msgstr "Beülő nem található" + +#: FulltiltToFpdb.py:421 +#, fuzzy +msgid "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" +msgstr "DEBUG: nem ismert readAction: '%s' '%s'" + +#: FulltiltToFpdb.py:497 +msgid "determineTourneyType : Parsing NOK" +msgstr "" + +#: FulltiltToFpdb.py:555 +msgid "Unable to get a valid Tournament ID -- File rejected" +msgstr "" + +#: FulltiltToFpdb.py:586 +msgid "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" +msgstr "" + +#: FulltiltToFpdb.py:593 +msgid "Conflict between fees read in topline (%s) and in BuyIn field (%s)" +msgstr "" + +#: FulltiltToFpdb.py:597 +msgid "Unable to affect a buyin to this tournament : assume it's a freeroll" +msgstr "" + +#: FulltiltToFpdb.py:698 +msgid "FullTilt: Player finishing stats unreadable : %s" +msgstr "" + +#: FulltiltToFpdb.py:707 +msgid "FullTilt: %s not found in tourney.ranks ..." +msgstr "" + +#: FulltiltToFpdb.py:709 +msgid "FullTilt: Bad parsing : finish position incoherent : %s / %s" +msgstr "" + #: GuiAutoImport.py:85 msgid "Time between imports in seconds:" msgstr "Importálások közti idő (mp):" @@ -2078,6 +2158,7 @@ msgid "limit not found in self.limits(%s). hand: '%s'" msgstr "" #: OnGameToFpdb.py:268 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:321 +#: UltimateBetToFpdb.py:144 Win2dayToFpdb.py:156 msgid "readButton: not found" msgstr "readButton: nem található" @@ -2086,10 +2167,6 @@ msgstr "readButton: nem található" msgid "readBlinds in noSB exception - no SB created" msgstr "readBlinds noSB-n belül hiba" -#: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 -msgid "reading antes" -msgstr "antek olvasása" - #: Options.py:40 msgid "If passed error output will go to the console rather than ." msgstr "Ha be van állítva, akkor a hibakimenet a konzolra lesz irányítva." @@ -2586,6 +2663,10 @@ msgstr "addPlayer: helyezés:%s - név : '%s' - Nyeremény (%s)" msgid "incrementPlayerWinnings: name : '%s' - Add Winnings (%s)" msgstr "incrementPlayerWinnings: név : '%s' - plusz nyeremény (%s)" +#: UltimateBetToFpdb.py:42 +msgid "Initialising UltimateBetconverter class" +msgstr "" + #: WinTables.py:82 msgid "Window %s not found. Skipping." msgstr "A(z) %s nevű ablak nincs meg. Kihagyás." diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index a73df824a2626bf6477eb908db93d0522a0fa3dc..2c4ea94ad6821a6a58ae76a1be9d08ba23e49357 100644 GIT binary patch delta 19 bcmbPzo_Y3p<_+g+S&Xa Date: Sun, 29 Aug 2010 16:44:29 -0400 Subject: [PATCH 344/641] add Everleaf HH per Steffen's request --- .../NLHE-6max-USD-0.05-0.10-29Aug2010.txt | 416 ++++++++++++++++++ 1 file changed, 416 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Everleaf/Flop/NLHE-6max-USD-0.05-0.10-29Aug2010.txt diff --git a/pyfpdb/regression-test-files/cash/Everleaf/Flop/NLHE-6max-USD-0.05-0.10-29Aug2010.txt b/pyfpdb/regression-test-files/cash/Everleaf/Flop/NLHE-6max-USD-0.05-0.10-29Aug2010.txt new file mode 100644 index 00000000..2b2d59d6 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Everleaf/Flop/NLHE-6max-USD-0.05-0.10-29Aug2010.txt @@ -0,0 +1,416 @@ +Everleaf Gaming Game #196321235 +***** Hand history for game #196321235 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:15 +Table Cortland XIV +Seat 6 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 12.40 USD ) +Seat 2: EricBlade ( $ 5 USD ) +Seat 3: gabitzatoade ( $ 5.45 USD ) +Seat 5: N0pr3s3n7 ( $ 10.29 USD ) +Seat 6: Coolcatcool ( $ 8.30 USD ) +zlodeu123: posts small blind [$ 0.05 USD] +EricBlade: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ 9h, Qd ] +gabitzatoade folds +N0pr3s3n7 raises [$ 0.35 USD] +Coolcatcool folds +zlodeu123 folds +EricBlade folds +N0pr3s3n7 does not show cards +N0pr3s3n7 wins $ 0.25 USD from main pot + + + +Everleaf Gaming Game #196321319 +***** Hand history for game #196321319 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:38 +Table Cortland XIV +Seat 1 is the button +Total number of players: 5 +Seat 1: zlodeu123 ( $ 12.35 USD ) +Seat 2: EricBlade ( $ 4.90 USD ) +Seat 3: gabitzatoade ( $ 5.45 USD ) +Seat 5: N0pr3s3n7 ( $ 10.44 USD ) +Seat 6: Coolcatcool ( $ 8.30 USD ) +EricBlade: posts small blind [$ 0.05 USD] +gabitzatoade: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ Qd, 9d ] +N0pr3s3n7 folds +Coolcatcool folds +zlodeu123 folds +EricBlade raises [$ 0.25 USD] +gabitzatoade folds +EricBlade does not show cards +EricBlade wins $ 0.20 USD from main pot + + + +Everleaf Gaming Game #196321394 +***** Hand history for game #196321394 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:34:57 +Table Cortland XIV +Seat 2 is the button +Total number of players: 5 +Seat 1: zlodeu123 ( $ 12.35 USD ) +Seat 2: EricBlade ( $ 5 USD ) +Seat 3: gabitzatoade ( $ 5.35 USD ) +Seat 4: Miazza ( new player ) +Seat 5: N0pr3s3n7 ( $ 10.44 USD ) +Seat 6: Coolcatcool ( $ 8.30 USD ) +gabitzatoade: posts small blind [$ 0.05 USD] +N0pr3s3n7: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ 9c, Ac ] +Coolcatcool folds +zlodeu123 folds +EricBlade raises [$ 0.35 USD] +gabitzatoade calls [$ 0.30 USD] +N0pr3s3n7 folds +** Dealing Flop ** [ 4c, Kh, 6h ] +gabitzatoade checks +EricBlade: bets [$ 0.40 USD] +gabitzatoade calls [$ 0.40 USD] +** Dealing Turn ** [ Qh ] +gabitzatoade checks +Miazza has joined the table +EricBlade checks +** Dealing River ** [ Qd ] +gabitzatoade checks +EricBlade checks +EricBlade shows [ 9c, Ac ] a pair of queens +gabitzatoade shows [ 4s, 4d ] a full house, fours full of queens +gabitzatoade wins $ 1.52 USD from main pot with a full house, fours full of queens [ Qh, Qd, 4s, 4d, 4c ] + + + +Everleaf Gaming Game #196321538 +***** Hand history for game #196321538 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:35:34 +Table Cortland XIV +Seat 3 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 12.35 USD ) +Seat 2: EricBlade ( $ 4.25 USD ) +Seat 3: gabitzatoade ( $ 6.12 USD ) +Seat 4: Miazza ( $ 5 USD ) +Seat 5: N0pr3s3n7 ( $ 10.34 USD ) +Seat 6: Coolcatcool ( $ 8.30 USD ) +N0pr3s3n7: posts small blind [$ 0.05 USD] +Coolcatcool: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ Kc, Jd ] +zlodeu123 raises [$ 0.35 USD] +EricBlade calls [$ 0.35 USD] +gabitzatoade folds +N0pr3s3n7 folds +Coolcatcool folds +** Dealing Flop ** [ 9s, 3c, Jc ] +zlodeu123: bets [$ 0.60 USD] +EricBlade raises [$ 1.80 USD] +zlodeu123 folds +EricBlade does not show cards +EricBlade wins $ 1.95 USD from main pot + + + +Everleaf Gaming Game #196321707 +***** Hand history for game #196321707 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:15 +Table Cortland XIV +Seat 5 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.40 USD ) +Seat 2: EricBlade ( $ 5.25 USD ) +Seat 3: gabitzatoade ( $ 6.12 USD ) +Seat 4: Miazza ( $ 5 USD ) +Seat 5: N0pr3s3n7 ( $ 10.29 USD ) +Seat 6: Coolcatcool ( $ 8.20 USD ) +Coolcatcool: posts small blind [$ 0.05 USD] +zlodeu123: posts big blind [$ 0.10 USD] +Miazza sits out +** Dealing down cards ** +Dealt to EricBlade [ 6d, 3d ] +EricBlade folds +gabitzatoade calls [$ 0.10 USD] +N0pr3s3n7 raises [$ 0.30 USD] +Coolcatcool folds +zlodeu123 folds +gabitzatoade calls [$ 0.20 USD] +** Dealing Flop ** [ 8d, 4d, Td ] +gabitzatoade checks +N0pr3s3n7: bets [$ 0.50 USD] +gabitzatoade folds +N0pr3s3n7 does not show cards +N0pr3s3n7 wins $ 0.72 USD from main pot + + + +Everleaf Gaming Game #196321850 +***** Hand history for game #196321850 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:36:52 +Table Cortland XIV +Seat 6 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.30 USD ) +Seat 2: EricBlade ( $ 5.25 USD ) +Seat 3: gabitzatoade ( $ 5.82 USD ) +Seat 4: Miazza ( $ 5 USD ) +Seat 5: N0pr3s3n7 ( $ 10.71 USD ) +Seat 6: Coolcatcool ( $ 8.15 USD ) +zlodeu123: posts small blind [$ 0.05 USD] +EricBlade: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ Qh, Qd ] +gabitzatoade folds +N0pr3s3n7 folds +Coolcatcool folds +zlodeu123 folds +EricBlade does not show cards +EricBlade wins $ 0.10 USD from main pot + + + +Everleaf Gaming Game #196321947 +***** Hand history for game #196321947 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:15 +Table Cortland XIV +Seat 1 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.25 USD ) +Seat 2: EricBlade ( $ 5.30 USD ) +Seat 3: gabitzatoade ( $ 5.82 USD ) +Seat 4: Miazza ( $ 5 USD ) +Seat 5: N0pr3s3n7 ( $ 10.71 USD ) +Seat 6: Coolcatcool ( $ 8.15 USD ) +EricBlade: posts small blind [$ 0.05 USD] +gabitzatoade: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ Ts, Ks ] +N0pr3s3n7 folds +Coolcatcool folds +zlodeu123 folds +EricBlade raises [$ 0.25 USD] +gabitzatoade folds +EricBlade does not show cards +EricBlade wins $ 0.20 USD from main pot + + + +Everleaf Gaming Game #196322013 +***** Hand history for game #196322013 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:37:32 +Table Cortland XIV +Seat 2 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.25 USD ) +Seat 2: EricBlade ( $ 5.40 USD ) +Seat 3: gabitzatoade ( $ 5.72 USD ) +Seat 4: Miazza ( $ 5 USD ) +Seat 5: N0pr3s3n7 ( $ 10.71 USD ) +Seat 6: Coolcatcool ( $ 8.15 USD ) +gabitzatoade: posts small blind [$ 0.05 USD] +Miazza: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ 2c, 4s ] +N0pr3s3n7 folds +Coolcatcool folds +zlodeu123 raises [$ 0.35 USD] +EricBlade folds +gabitzatoade calls [$ 0.30 USD] +Miazza folds +** Dealing Flop ** [ Ad, 6d, 6s ] +gabitzatoade checks +zlodeu123: bets [$ 0.60 USD] +gabitzatoade calls [$ 0.60 USD] +** Dealing Turn ** [ Jc ] +gabitzatoade checks +zlodeu123 checks +** Dealing River ** [ Th ] +gabitzatoade checks +zlodeu123 checks +zlodeu123 shows [ Ah, 8d ] two pairs, aces and sixes +gabitzatoade shows [ Ac, 9c ] two pairs, aces and sixes +gabitzatoade wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ac, Ad, Jc, 6d, 6s ] +zlodeu123 wins $ 0.95 USD from main pot with two pairs, aces and sixes [ Ah, Ad, Jc, 6d, 6s ] + + + +Everleaf Gaming Game #196322188 +***** Hand history for game #196322188 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:16 +Table Cortland XIV +Seat 3 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.25 USD ) +Seat 2: EricBlade ( $ 5.40 USD ) +Seat 3: gabitzatoade ( $ 5.72 USD ) +Seat 4: Miazza ( $ 4.90 USD ) +Seat 5: N0pr3s3n7 ( $ 10.71 USD ) +Seat 6: Coolcatcool ( $ 8.15 USD ) +Miazza: posts small blind [$ 0.05 USD] +N0pr3s3n7: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ 7d, Kd ] +Coolcatcool folds +zlodeu123 folds +EricBlade raises [$ 0.35 USD] +gabitzatoade folds +Miazza folds +N0pr3s3n7 folds +EricBlade does not show cards +EricBlade wins $ 0.25 USD from main pot + + + +Everleaf Gaming Game #196322268 +***** Hand history for game #196322268 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:34 +Table Cortland XIV +Seat 4 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.25 USD ) +Seat 2: EricBlade ( $ 5.55 USD ) +Seat 3: gabitzatoade ( $ 5.72 USD ) +Seat 4: Miazza ( $ 4.85 USD ) +Seat 5: N0pr3s3n7 ( $ 10.61 USD ) +Seat 6: Coolcatcool ( $ 8.15 USD ) +N0pr3s3n7: posts small blind [$ 0.05 USD] +Coolcatcool: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ 6d, Kc ] +zlodeu123 folds +EricBlade folds +gabitzatoade folds +Miazza raises [$ 0.35 USD] +N0pr3s3n7 folds +Coolcatcool raises [$ 0.50 USD] +Miazza folds +Coolcatcool does not show cards +Coolcatcool wins $ 0.75 USD from main pot + + + +Everleaf Gaming Game #196322353 +***** Hand history for game #196322353 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:38:57 +Table Cortland XIV +Seat 5 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.25 USD ) +Seat 2: EricBlade ( $ 5.55 USD ) +Seat 3: gabitzatoade ( $ 5.72 USD ) +Seat 4: Miazza ( $ 4.50 USD ) +Seat 5: N0pr3s3n7 ( $ 10.56 USD ) +Seat 6: Coolcatcool ( $ 8.55 USD ) +Coolcatcool: posts small blind [$ 0.05 USD] +zlodeu123: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ 3h, 9s ] +EricBlade folds +gabitzatoade folds +Miazza folds +N0pr3s3n7 folds +Coolcatcool folds +zlodeu123 does not show cards +zlodeu123 wins $ 0.10 USD from main pot + + + +Everleaf Gaming Game #196322422 +***** Hand history for game #196322422 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:39:15 +Table Cortland XIV +Seat 6 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.30 USD ) +Seat 2: EricBlade ( $ 5.55 USD ) +Seat 3: gabitzatoade ( $ 5.72 USD ) +Seat 4: Miazza ( $ 4.50 USD ) +Seat 5: N0pr3s3n7 ( $ 10.56 USD ) +Seat 6: Coolcatcool ( $ 8.50 USD ) +zlodeu123: posts small blind [$ 0.05 USD] +EricBlade: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ Kd, 4h ] +gabitzatoade folds +Miazza folds +N0pr3s3n7 folds +Coolcatcool folds +zlodeu123 folds +EricBlade does not show cards +EricBlade wins $ 0.10 USD from main pot + + + +Everleaf Gaming Game #196322487 +***** Hand history for game #196322487 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:39:32 +Table Cortland XIV +Seat 1 is the button +Total number of players: 6 +Seat 1: zlodeu123 ( $ 11.25 USD ) +Seat 2: EricBlade ( $ 5.60 USD ) +Seat 3: gabitzatoade ( $ 5.72 USD ) +Seat 4: Miazza ( $ 4.50 USD ) +Seat 5: N0pr3s3n7 ( $ 10.56 USD ) +Seat 6: Coolcatcool ( $ 8.50 USD ) +EricBlade: posts small blind [$ 0.05 USD] +gabitzatoade: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ 9h, Th ] +Miazza folds +N0pr3s3n7 folds +Coolcatcool folds +zlodeu123 folds +EricBlade raises [$ 0.25 USD] +gabitzatoade calls [$ 0.20 USD] +** Dealing Flop ** [ 3d, 5d, 6c ] +EricBlade checks +gabitzatoade: bets [$ 0.40 USD] +EricBlade folds +gabitzatoade does not show cards +gabitzatoade wins $ 0.57 USD from main pot + + + +Everleaf Gaming Game #196322581 +***** Hand history for game #196322581 ***** +Blinds $0.05/$0.10 NL Hold'em - 2010/08/29 - 20:39:58 +Table Cortland XIV +Seat 2 is the button +Total number of players: 5 +Seat 1: zlodeu123 ( $ 11.25 USD ) +Seat 2: EricBlade ( $ 5.30 USD ) +Seat 3: gabitzatoade ( $ 5.99 USD ) +Seat 4: Miazza ( $ 4.50 USD ) +Seat 5: N0pr3s3n7 ( $ 10.56 USD ) +Seat 6: SAVCOMP ( new player ) +gabitzatoade: posts small blind [$ 0.05 USD] +Miazza: posts big blind [$ 0.10 USD] +** Dealing down cards ** +Dealt to EricBlade [ As, 4d ] +N0pr3s3n7 folds +zlodeu123 raises [$ 0.35 USD] +EricBlade folds +gabitzatoade calls [$ 0.30 USD] +SAVCOMP has joined the table +Miazza folds +** Dealing Flop ** [ 3h, 7h, Tc ] +gabitzatoade checks +zlodeu123 checks +** Dealing Turn ** [ Ks ] +gabitzatoade: bets [$ 0.30 USD] +zlodeu123 raises [$ 0.80 USD] +gabitzatoade calls [$ 0.50 USD] +** Dealing River ** [ Ts ] +gabitzatoade: bets [$ 2 USD] +zlodeu123 calls [$ 2 USD] +gabitzatoade shows [ 8s, 7s ] two pairs, tens and sevens +zlodeu123 shows [ Kd, Ad ] two pairs, kings and tens +zlodeu123 wins $ 6.08 USD from main pot with two pairs, kings and tens [ Ad, Kd, Ks, Tc, Ts ] + + + From 1f2c320fd2aa8dbe55182481ab4d19e4fb262f88 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 30 Aug 2010 01:19:23 +0200 Subject: [PATCH 345/641] l10n: add missing gettextifications in GuiDatabase --- pyfpdb/GuiDatabase.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/pyfpdb/GuiDatabase.py b/pyfpdb/GuiDatabase.py index e85e3057..d6eaf14f 100755 --- a/pyfpdb/GuiDatabase.py +++ b/pyfpdb/GuiDatabase.py @@ -403,8 +403,7 @@ class GuiDatabase: status = "failed" icon = gtk.STOCK_CANCEL if err_msg: - log.info( _('db connection to ') + str(dbms_num)+','+host+','+name+','+user+','+passwd+' failed: ' - + err_msg ) + log.info( _('db connection to %s, %s, %s, %s, %s failed: %s') % (str(dbms_num), host, name, user, passwd, err_msg)) return( status, err_msg, icon ) @@ -412,7 +411,7 @@ class GuiDatabase: class AddDB(gtk.Dialog): def __init__(self, config, parent): - log.debug("AddDB starting") + log.debug(_("AddDB starting")) self.dbnames = { 'Sqlite' : Configuration.DATABASE_TYPE_SQLITE , 'MySQL' : Configuration.DATABASE_TYPE_MYSQL , 'PostgreSQL' : Configuration.DATABASE_TYPE_POSTGRESQL @@ -421,7 +420,7 @@ class AddDB(gtk.Dialog): # create dialog and add icon and label super(AddDB,self).__init__( parent=parent , flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT - , title="Add New Database" + , title=_("Add New Database") , buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT ,gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT) ) # , buttons=btns @@ -489,7 +488,7 @@ class AddDB(gtk.Dialog): def run(self): response = super(AddDB,self).run() - log.debug("adddb.run: response is "+str(response)+" accept is "+str(int(gtk.RESPONSE_ACCEPT))) + log.debug(_("addDB.run: response is %s accept is %s" % (str(response), str(int(gtk.RESPONSE_ACCEPT))))) ok,retry = False,True while response == gtk.RESPONSE_ACCEPT: @@ -503,7 +502,7 @@ class AddDB(gtk.Dialog): ,name, db_desc, user, passwd, host) = ("error", "error", None, None, None ,None, None, None, None, None) if ok: - log.debug("start creating new db") + log.debug(_("start creating new db")) # add a new db master_password = None dbms = self.dbnames[ self.cb_dbms.get_active_text() ] @@ -522,7 +521,7 @@ class AddDB(gtk.Dialog): # test db after creating? status, err_msg, icon = GuiDatabase.testDB(self.config, dbms, dbms_num, name, user, passwd, host) - log.debug('tested new db, result='+str((status,err_msg))) + log.debug(_('tested new db, result=%s') % str((status,err_msg))) if status == 'ok': #dia = InfoBox( parent=self, str1=_('Database created') ) str1 = _('Database created') @@ -541,7 +540,7 @@ class AddDB(gtk.Dialog): """check fields and return true/false according to whether user wants to try again return False if fields are ok """ - log.debug("check_fields: starting") + log.debug(_("check_fields: starting")) try_again = False ok = True @@ -573,11 +572,11 @@ class AddDB(gtk.Dialog): # checks for postgres pass else: - msg = "Unknown Database Type selected" + msg = _("Unknown Database Type selected") ok = False if not ok: - log.debug("check_fields: open dialog") + log.debug(_("check_fields: open dialog")) dia = gtk.MessageDialog( parent=self , flags=gtk.DIALOG_DESTROY_WITH_PARENT , type=gtk.MESSAGE_ERROR @@ -590,14 +589,14 @@ class AddDB(gtk.Dialog): dia.vbox.add(l) dia.show_all() ret = dia.run() - log.debug("check_fields: ret is "+str(ret)+" cancel is "+str(int(gtk.RESPONSE_CANCEL))) + log.debug(_("check_fields: ret is %s cancel is %s" % (str(ret), str(int(gtk.RESPONSE_CANCEL))))) if ret == gtk.RESPONSE_YES: try_again = True - log.debug("check_fields: destroy dialog") + log.debug(_("check_fields: destroy dialog")) dia.hide() dia.destroy() - log.debug("check_fields: returning ok as "+str(ok)+", try_again as "+str(try_again)) + log.debug(_("check_fields: returning ok as %s, try_again as %s") % (str(ok), str(try_again))) return(ok,try_again) def db_type_changed(self, widget, data): From 05220f1c6f651ed7920eb02d560bca737969ac25 Mon Sep 17 00:00:00 2001 From: Erki Ferenc Date: Mon, 30 Aug 2010 01:21:55 +0200 Subject: [PATCH 346/641] l10n: updated Hungarian translation --- pyfpdb/locale/fpdb-hu_HU.po | 209 +++++++++++++++--------------------- 1 file changed, 87 insertions(+), 122 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index bc8be173..b33e9e57 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" "POT-Creation-Date: 2010-08-29 22:08+CEST\n" -"PO-Revision-Date: 2010-08-29 14:25+0200\n" +"PO-Revision-Date: 2010-08-30 01:20+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -28,17 +28,16 @@ msgid "reading antes" msgstr "antek olvasása" #: AbsoluteToFpdb.py:236 EverleafToFpdb.py:229 -#, fuzzy msgid "No bringin found." -msgstr "Beülő nem található" +msgstr "Nyitó hívás nem található." #: AbsoluteToFpdb.py:243 EverleafToFpdb.py:236 msgid "No small blind" -msgstr "" +msgstr "Nincs kisvak" #: AbsoluteToFpdb.py:270 msgid "Absolute readStudPlayerCards is only a stub." -msgstr "" +msgstr "Az Absolute terem readStudPlayerCards funkciója csak egy csonk." #: AbsoluteToFpdb.py:337 BetfairToFpdb.py:229 CarbonToFpdb.py:288 #: EverleafToFpdb.py:325 FulltiltToFpdb.py:715 PartyPokerToFpdb.py:525 @@ -72,11 +71,11 @@ msgstr "GameInfo regex nem illeszkedik" #: BetfairToFpdb.py:130 msgid "readPlayerStacks: Less than 2 players found in a hand" -msgstr "" +msgstr "readPlayerStacks: Kettőnél kevesebb játékost találtam egy leosztásban" #: BetfairToFpdb.py:170 msgid "No bringin found" -msgstr "Beülő nem található" +msgstr "Nyitó hívás nem található" #: BetfairToFpdb.py:206 OnGameToFpdb.py:339 PokerStarsToFpdb.py:441 msgid "DEBUG: unimplemented readAction: '%s' '%s'" @@ -109,9 +108,10 @@ msgstr "" " vagy itt: %s\n" #: Configuration.py:135 Configuration.py:136 -#, fuzzy msgid "Error copying .example config file, cannot fall back. Exiting.\n" -msgstr "Hiba a .example fájl másolása közben, nem tudom folytatni. Kilépés.\n" +msgstr "" +"Hiba a .example konfigurációs fájl másolása közben, nem tudom folytatni. " +"Kilépés.\n" #: Configuration.py:140 Configuration.py:141 msgid "No %s found, cannot fall back. Exiting.\n" @@ -202,9 +202,8 @@ msgid "Error parsing %s. See error log file." msgstr "Hiba a(z) %s értelmezése közben. Nézz bele a hibanaplóba." #: Configuration.py:831 -#, fuzzy msgid "Error parsing example file %s. See error log file." -msgstr "Hiba a(z) %s értelmezése közben. Nézz bele a hibanaplóba." +msgstr "Hiba a(z) %s mintafájl értelmezése közben. Nézz bele a hibanaplóba." #: Database.py:74 msgid "Not using sqlalchemy connection pool." @@ -516,7 +515,7 @@ msgstr "nyomj ENTER-t a folytatáshoz" #: EverleafToFpdb.py:264 msgid "Everleaf readStudPlayerCards is only a stub." -msgstr "" +msgstr "Az Everleaf terem readStudPlayerCards funkciója csak egy csonk." #: Filters.py:62 msgid "All" @@ -567,9 +566,8 @@ msgid "Grouping:" msgstr "Csoportosítás:" #: Filters.py:66 -#, fuzzy msgid "Show Position Stats" -msgstr "Pozíció" +msgstr "Pozíciók" #: Filters.py:67 TourneyFilters.py:60 msgid "Date:" @@ -645,11 +643,11 @@ msgstr "Nem található játék az adatbázisban" #: Filters.py:894 msgid "From:" -msgstr "" +msgstr "Ettől:" #: Filters.py:908 msgid "To:" -msgstr "" +msgstr "Eddig:" #: Filters.py:913 msgid " Clear Dates " @@ -665,77 +663,75 @@ msgstr "Kész" #: FulltiltToFpdb.py:361 msgid "Player bringing in: %s for %s" -msgstr "" +msgstr "Nyitó hívás: %s hív %s-t" #: FulltiltToFpdb.py:364 -#, fuzzy msgid "No bringin found, handid =%s" -msgstr "Beülő nem található" +msgstr "Nyitó hívás nem található, leosztásazonosító = %s" #: FulltiltToFpdb.py:421 -#, fuzzy msgid "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" -msgstr "DEBUG: nem ismert readAction: '%s' '%s'" +msgstr "FullTilt: DEBUG: nem ismert readAction: '%s' '%s'" #: FulltiltToFpdb.py:497 msgid "determineTourneyType : Parsing NOK" -msgstr "" +msgstr "determineTourneyType : értelmezés nem OK" #: FulltiltToFpdb.py:555 msgid "Unable to get a valid Tournament ID -- File rejected" -msgstr "" +msgstr "Nem sikerült érvényes versenyazonosítót találni --- A fájl elutasítva" #: FulltiltToFpdb.py:586 msgid "Conflict between buyins read in topline (%s) and in BuyIn field (%s)" msgstr "" +"Eltérés a beülők mértéke között a fejlécben (%s) és a Beülő mezőben (%s)" #: FulltiltToFpdb.py:593 msgid "Conflict between fees read in topline (%s) and in BuyIn field (%s)" msgstr "" +"Eltérés a díjak mértéke között a fejlécben (%s) és a Beülő mezőben (%s)" #: FulltiltToFpdb.py:597 msgid "Unable to affect a buyin to this tournament : assume it's a freeroll" msgstr "" +"Nem sikerült beülőt meghatározni ehhez a versenyhez : feltételezem, hogy ez " +"egy freeroll" #: FulltiltToFpdb.py:698 msgid "FullTilt: Player finishing stats unreadable : %s" -msgstr "" +msgstr "FullTilt: A következő játékos helyezési adata nem olvashatóak : %s" #: FulltiltToFpdb.py:707 msgid "FullTilt: %s not found in tourney.ranks ..." -msgstr "" +msgstr "FullTilt: %s nem található a verseny helyezései között ..." #: FulltiltToFpdb.py:709 msgid "FullTilt: Bad parsing : finish position incoherent : %s / %s" -msgstr "" +msgstr "FullTilt: Hibás értelmezés : a helyezések nem egyeznek : %s / %s" #: GuiAutoImport.py:85 msgid "Time between imports in seconds:" msgstr "Importálások közti idő (mp):" #: GuiAutoImport.py:116 GuiAutoImport.py:184 GuiAutoImport.py:261 -#, fuzzy msgid " Start _Auto Import " -msgstr " _AutoImport indítása " +msgstr " _Auto Import indítása " #: GuiAutoImport.py:135 -#, fuzzy msgid "Auto Import Ready." -msgstr "AutoImport kész." +msgstr "Auto Import kész." #: GuiAutoImport.py:148 -#, fuzzy msgid "Please choose the path that you want to Auto Import" -msgstr "Válaszd ki a könyvtárat az AutoImporthoz" +msgstr "Válaszd ki a könyvtárat az Auto Importhoz" #: GuiAutoImport.py:171 msgid " _Auto Import Running " -msgstr " _AutoImport fut " +msgstr " _Auto Import fut " #: GuiAutoImport.py:182 -#, fuzzy msgid " Stop _Auto Import " -msgstr " _AutoImport leállítása " +msgstr " _Auto Import leállítása " #: GuiAutoImport.py:207 msgid "" @@ -743,12 +739,11 @@ msgid "" "Global lock taken ... Auto Import Started.\n" msgstr "" "\n" -"Globális zárolás OK ... AutoImport elindítva.\n" +"Globális zárolás OK ... Auto Import elindítva.\n" #: GuiAutoImport.py:209 -#, fuzzy msgid " _Stop Auto Import " -msgstr " _AutoImport leállítása " +msgstr " _Auto Import leállítása " #: GuiAutoImport.py:225 msgid "opening pipe to HUD" @@ -763,31 +758,28 @@ msgstr "" "*** GuiAutoImport Hiba a cső nyitásakor: " #: GuiAutoImport.py:249 -#, fuzzy msgid "" "\n" "Auto Import aborted - global lock not available" msgstr "" "\n" -"AutoImport megszakítva - nem elérhető a globális zárolás" +"Auto Import megszakítva - nem elérhető a globális zárolás" #: GuiAutoImport.py:254 -#, fuzzy msgid "" "\n" "Stopping Auto Import - global lock released." msgstr "" "\n" -"AutoImport leállítása - globális zárolás feloldva." +"Auto Import leállítása - globális zárolás feloldva." #: GuiAutoImport.py:256 -#, fuzzy msgid "" "\n" " * Stop Auto Import: HUD already terminated" msgstr "" "\n" -" * AutoImport megállítása: A HUD már nem fut" +" * Auto Import megállítása: A HUD már nem fut" #: GuiAutoImport.py:283 msgid "Browse..." @@ -824,7 +816,6 @@ msgid "Import Complete" msgstr "Importálás kész" #: GuiBulkImport.py:139 -#, fuzzy msgid "bulk import aborted - global lock not available" msgstr "importálás megszakítva - nem elérhető a globális zárolás" @@ -958,17 +949,16 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " -"%s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" +"s másodperc alatt - %.0f/mp" #: GuiDatabase.py:117 msgid "_Add" -msgstr "" +msgstr "Hozzá_adás" #: GuiDatabase.py:121 -#, fuzzy msgid "_Refresh" -msgstr "Frissítés" +msgstr "F_rissítés" #: GuiDatabase.py:125 msgid "Type" @@ -996,7 +986,7 @@ msgstr "Kiszolgáló" #: GuiDatabase.py:131 msgid "Open" -msgstr "" +msgstr "Megnyitva" #: GuiDatabase.py:132 msgid "Status" @@ -1011,9 +1001,8 @@ msgid "finished." msgstr "befejezve." #: GuiDatabase.py:303 -#, fuzzy msgid "loadDbs error: " -msgstr "loaddbs hiba: " +msgstr "loadDbs hiba: " #: GuiDatabase.py:324 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 msgid "***sortCols error: " @@ -1024,9 +1013,8 @@ msgid "sortCols error: " msgstr "sortCols hiba: " #: GuiDatabase.py:371 -#, fuzzy msgid "testDB: trying to connect to: %s/%s, %s, %s/%s" -msgstr "loaddbs: kapcolódási próbálkozás: %s/%s, %s, %s/%s" +msgstr "testDB: kapcsolódási kísérlet: %s/%s, %s, %s/%s" #: GuiDatabase.py:374 msgid " connected ok" @@ -1054,83 +1042,71 @@ msgid "Please check that the MySQL service has been started" msgstr "Kérlek ellenőrizd, hogy a MySQL szolgáltatás el van-e indítva" #: GuiDatabase.py:392 fpdb.pyw:891 -#, fuzzy msgid "" "PostgreSQL Server reports: Access denied. Are your permissions set correctly?" msgstr "" -"Postgres szerver jelenti: A hozzáférés megtagadva. Biztosan megfelelőek a " +"PostgreSQL szerver jelenti: A hozzáférés megtagadva. Megfelelőek a " "jogosultságaid?" #: GuiDatabase.py:395 fpdb.pyw:893 -#, fuzzy msgid "PostgreSQL client reports: Unable to connect - " -msgstr "Postgres kliens jelenti: Nem sikerült a kapcsolódás - " +msgstr "PostgreSQL kliens jelenti: Nem sikerült a kapcsolódás - " #: GuiDatabase.py:396 fpdb.pyw:894 -#, fuzzy msgid "Please check that the PostgreSQL service has been started" -msgstr "Kérlek ellenőrizd, hogy a Postgres szolgáltatás el van-e indítva" +msgstr "Kérlek ellenőrizd, hogy a PostgreSQL szolgáltatás el van-e indítva" #: GuiDatabase.py:406 -#, fuzzy msgid "db connection to " -msgstr "folytató nyitás %" +msgstr "kapcsolódás az adatbázishoz " #: GuiDatabase.py:434 -#, fuzzy msgid "DB Type" -msgstr "Típus" +msgstr "Adatbázis típus" #: GuiDatabase.py:444 -#, fuzzy msgid "DB Name" -msgstr "Név" +msgstr "Adatbázis név" #: GuiDatabase.py:452 -#, fuzzy msgid "DB Description" -msgstr "Leírás" +msgstr "Adatbázis leírás" #: GuiDatabase.py:473 -#, fuzzy msgid "Host Computer" -msgstr "Importálás kész" +msgstr "Kiszolgáló" #: GuiDatabase.py:528 -#, fuzzy msgid "Database created" -msgstr "A_datbázis" +msgstr "Adatbázis létrehozva" #: GuiDatabase.py:531 -#, fuzzy msgid "Database creation failed" -msgstr " index létrehozása nem sikerült: " +msgstr "Adatbázis létrehozása nem sikerült" #: GuiDatabase.py:550 msgid "No Database Name given" -msgstr "" +msgstr "Nem lett adatbázis név megadva" #: GuiDatabase.py:553 msgid "No Database Description given" -msgstr "" +msgstr "Nem lett adatbázis leírás megadva" #: GuiDatabase.py:556 -#, fuzzy msgid "No Username given" -msgstr "Felhasználónév" +msgstr "Nem lett felhasználónév megadva" #: GuiDatabase.py:559 -#, fuzzy msgid "No Password given" -msgstr "Jelszó" +msgstr "Nem lett jelszó megadva" #: GuiDatabase.py:562 msgid "No Host given" -msgstr "" +msgstr "Nem lett kiszolgáló megadva" #: GuiDatabase.py:589 msgid "Do you want to try again?" -msgstr "" +msgstr "Meg akarod próbálni újból?" #: GuiDatabase.py:702 GuiLogView.py:213 msgid "Test Log Viewer" @@ -1487,11 +1463,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -1714,9 +1690,9 @@ msgid "Hand.insert(): hid #: %s is a duplicate" msgstr "Hand.insert(): %s leosztásazonosító duplikáció" #: Hand.py:318 -#, fuzzy msgid "markstreets didn't match - Assuming hand %s was cancelled" -msgstr "markStreets nem egyezik - Leosztás érvénytelenítését feltételezem" +msgstr "" +"markstreets nem egyezik - A(z) %s leosztás érvénytelenítését feltételezem" #: Hand.py:320 msgid "FpdbParseError: markStreets appeared to fail: First 100 chars: '%s'" @@ -1828,7 +1804,7 @@ msgstr "%s utcán %s játékos kiegészít erre: %s" #: Hand.py:1270 msgid "Bringin: %s, %s" -msgstr "Beülő: %s, %s" +msgstr "Nyitó hívás: %s, %s" #: Hand.py:1310 msgid "*** 3RD STREET ***" @@ -2149,13 +2125,13 @@ msgid "Unable to recognise gametype from: '%s'" msgstr "Nem sikerült felismerni a játéktípust innen: '%s'" #: OnGameToFpdb.py:192 -#, fuzzy msgid "determineGameType: limit not found in self.limits(%s). hand: '%s'" -msgstr "determineGameType: Nem sikerült felismerni a játéktípust innen: '%s'" +msgstr "" +"determineGameType: limit nem található ebben: self.limits(%s). leosztás: '%s'" #: OnGameToFpdb.py:194 msgid "limit not found in self.limits(%s). hand: '%s'" -msgstr "" +msgstr "limit nem található ebben: self.limits(%s). leosztás: '%s'" #: OnGameToFpdb.py:268 PartyPokerToFpdb.py:351 PokerStarsToFpdb.py:321 #: UltimateBetToFpdb.py:144 Win2dayToFpdb.py:156 @@ -2163,9 +2139,8 @@ msgid "readButton: not found" msgstr "readButton: nem található" #: OnGameToFpdb.py:288 -#, fuzzy msgid "readBlinds in noSB exception - no SB created" -msgstr "readBlinds noSB-n belül hiba" +msgstr "noSB-n belüli readBlinds hiba - kisvak nem lett létrehozva" #: Options.py:40 msgid "If passed error output will go to the console rather than ." @@ -2665,7 +2640,7 @@ msgstr "incrementPlayerWinnings: név : '%s' - plusz nyeremény (%s)" #: UltimateBetToFpdb.py:42 msgid "Initialising UltimateBetconverter class" -msgstr "" +msgstr "UltimateBetconverter osztály inicializálása" #: WinTables.py:82 msgid "Window %s not found. Skipping." @@ -2844,24 +2819,21 @@ msgid "Confirm deleting and recreating tables" msgstr "Erősítsd meg a táblák törlését és újra létrehozását" #: fpdb.pyw:547 -#, fuzzy msgid "Please confirm that you want to (re-)create the tables." msgstr "" -"Kérlek erősítsd meg, hogy valóban újra akarod generálni a HUD gyorstárat." +"Kérlek erősítsd meg, hogy valóban (újra) létre akarod hozni a táblákat." #: fpdb.pyw:548 -#, fuzzy msgid "" " If there already are tables in the database %s on %s they will be deleted " "and you will have to re-import your histories.\n" msgstr "" -"), akkor azok törölve lesznek, és újra kell importálnod a " -"leosztástörténeteket.\n" -"Ja, és ez eltarthat egy darabig:)" +" Ha már vannak táblák a(z) %s adatbázisban a(z) %s kiszolgálón, akkor azok " +"törölve lesznek, és újra kell majd importálnod a leosztástörténeteket.\n" #: fpdb.pyw:549 msgid "This may take a while." -msgstr "" +msgstr "Ez eltarthat egy darabig." #: fpdb.pyw:574 msgid "User cancelled recreating tables" @@ -2978,7 +2950,7 @@ msgstr "A" #: fpdb.pyw:817 msgid "_Auto Import and HUD" -msgstr "_AutoImport és HUD" +msgstr "_Auto Import és HUD" #: fpdb.pyw:818 msgid "H" @@ -3103,13 +3075,13 @@ msgstr "" "%s.\n" #: fpdb.pyw:862 -#, fuzzy msgid "" "Edit your screen_name and hand history path in the supported_sites section " "of the Preferences window (Main menu) before trying to import hands." msgstr "" -"résznél a Beállítások ablakban (Főmenü) mielőtt megpróbálnál leosztásokat " -"importálni." +"Állítsd be a screen_name-et és a leosztástörténetek útvonalát a " +"supported_sites résznél a Beállítások ablakban (Főmenü) mielőtt megpróbálnál " +"leosztásokat importálni." #: fpdb.pyw:884 msgid "Connected to SQLite: %s" @@ -3147,22 +3119,20 @@ msgstr "" "kiszolgálón" #: fpdb.pyw:951 -#, fuzzy msgid "" "\n" "Global lock taken by %s" msgstr "" "\n" -"Globális zárolást végzett:" +"Globális zárolást végzett %s" #: fpdb.pyw:954 -#, fuzzy msgid "" "\n" "Failed to get global lock, it is currently held by %s" msgstr "" "\n" -"Globális zárolás meghiúsult, jelenleg már zárolta:" +"Globális zárolás meghiúsult, %s már zárolta" #: fpdb.pyw:964 msgid "Quitting normally" @@ -3174,7 +3144,7 @@ msgstr "Globális zárolás feloldva.\n" #: fpdb.pyw:995 msgid "Auto Import" -msgstr "AutoImport" +msgstr "Auto Import" #: fpdb.pyw:1002 msgid "Bulk Import" @@ -3258,8 +3228,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " -"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" +"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1060 msgid "Help" @@ -3270,7 +3240,6 @@ msgid "Graphs" msgstr "Grafikonok" #: fpdb.pyw:1119 -#, fuzzy msgid "" "\n" "Note: error output is being diverted to fpdb-errors.txt and HUD-errors.txt " @@ -3278,7 +3247,7 @@ msgid "" msgstr "" "\n" "Megjegyzés: a hibakimenet átirányítva az fpdb-errors.txt és HUD-errors.txt " -"fájlokba itt:\n" +"fájlokba itt: %s" #: fpdb.pyw:1148 msgid "fpdb starting ..." @@ -3289,7 +3258,6 @@ msgid "FPDB WARNING" msgstr "FPDB FIGYELMEZTETÉS" #: fpdb.pyw:1224 -#, fuzzy msgid "" "WARNING: Unable to find output hand history directory %s\n" "\n" @@ -3329,7 +3297,6 @@ msgstr "" "pénznem még nem támogatott" #: fpdb_import.py:227 -#, fuzzy msgid "Attempted to add non-directory '%s' as an import directory" msgstr "Nem könyvtár ('%s') megadása importálási könyvtárként" @@ -3362,14 +3329,12 @@ msgid "No need to rebuild hudcache." msgstr "Nem szükséges a HUD gyorstár újraépítése." #: fpdb_import.py:313 -#, fuzzy msgid "sending finish message queue length =" -msgstr "befejező üzenet küldése; qlen =" +msgstr "befejező üzenet küldése; sor hossza =" #: fpdb_import.py:439 fpdb_import.py:441 -#, fuzzy msgid "Converting %s" -msgstr "Konvertálás" +msgstr "%s konvertálása" #: fpdb_import.py:477 msgid "Hand processed but empty" From 54f7410e49c05862c8c72a5928cdf523bf87e104 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 30 Aug 2010 01:31:14 +0200 Subject: [PATCH 347/641] l10n: update pot/po/mo files --- pyfpdb/locale/de/LC_MESSAGES/fpdb.mo | Bin 20424 -> 20643 bytes pyfpdb/locale/fpdb-de_DE.po | 88 +++++++++++++++------ pyfpdb/locale/fpdb-en_GB.pot | 76 +++++++++++++----- pyfpdb/locale/fpdb-hu_HU.po | 114 +++++++++++++++++++-------- pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo | Bin 59291 -> 66341 bytes 5 files changed, 196 insertions(+), 82 deletions(-) diff --git a/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo index 5b67149b32a449e4d703768bf8d5603198bc4a95..b41b0c9387d86f4f4a4f9ecd804430784738d416 100644 GIT binary patch delta 3933 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 diff --git a/pyfpdb/locale/fpdb-de_DE.po b/pyfpdb/locale/fpdb-de_DE.po index 622557bc..47bacde7 100644 --- a/pyfpdb/locale/fpdb-de_DE.po +++ b/pyfpdb/locale/fpdb-de_DE.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-29 22:08+CEST\n" -"PO-Revision-Date: 2010-08-29 20:45+0200\n" +"POT-Creation-Date: 2010-08-30 01:19+CEST\n" +"PO-Revision-Date: 2010-08-30 00:57+0200\n" "Last-Translator: Steffen Schaumburg \n" "Language-Team: Fpdb\n" "Language: de\n" @@ -18,21 +18,21 @@ msgstr "" #: AbsoluteToFpdb.py:167 BetfairToFpdb.py:114 CarbonToFpdb.py:151 #: EverleafToFpdb.py:148 FulltiltToFpdb.py:221 msgid "Didn't match re_HandInfo" -msgstr "" +msgstr "Keine Treffer für re_HandInfo" #: AbsoluteToFpdb.py:224 EverleafToFpdb.py:217 FulltiltToFpdb.py:351 #: OnGameToFpdb.py:296 PokerStarsToFpdb.py:359 UltimateBetToFpdb.py:183 #: Win2dayToFpdb.py:197 msgid "reading antes" -msgstr "" +msgstr "Lese Antes" #: AbsoluteToFpdb.py:236 EverleafToFpdb.py:229 msgid "No bringin found." -msgstr "" +msgstr "Kein Bringin gefunden." #: AbsoluteToFpdb.py:243 EverleafToFpdb.py:236 msgid "No small blind" -msgstr "" +msgstr "Keine Small Blind" #: AbsoluteToFpdb.py:270 msgid "Absolute readStudPlayerCards is only a stub." @@ -935,11 +935,11 @@ msgstr "Name" msgid "Description" msgstr "Beschreibung" -#: GuiDatabase.py:128 GuiDatabase.py:459 GuiImapFetcher.py:119 +#: GuiDatabase.py:128 GuiDatabase.py:458 GuiImapFetcher.py:119 msgid "Username" msgstr "Benutzername" -#: GuiDatabase.py:129 GuiDatabase.py:466 GuiImapFetcher.py:119 +#: GuiDatabase.py:129 GuiDatabase.py:465 GuiImapFetcher.py:119 msgid "Password" msgstr "Passwort" @@ -1017,62 +1017,100 @@ msgid "Please check that the PostgreSQL service has been started" msgstr "Bitte überprüfen Sie, dass der PostgreSQL-Dienst gestartet ist" #: GuiDatabase.py:406 -msgid "db connection to " +msgid "db connection to %s, %s, %s, %s, %s failed: %s" msgstr "" -#: GuiDatabase.py:434 +#: GuiDatabase.py:414 +#, fuzzy +msgid "AddDB starting" +msgstr "fpdb startet ..." + +#: GuiDatabase.py:423 +#, fuzzy +msgid "Add New Database" +msgstr "_Datenbank" + +#: GuiDatabase.py:433 msgid "DB Type" msgstr "" -#: GuiDatabase.py:444 +#: GuiDatabase.py:443 msgid "DB Name" msgstr "" -#: GuiDatabase.py:452 +#: GuiDatabase.py:451 msgid "DB Description" msgstr "" -#: GuiDatabase.py:473 +#: GuiDatabase.py:472 msgid "Host Computer" msgstr "" -#: GuiDatabase.py:528 +#: GuiDatabase.py:505 +msgid "start creating new db" +msgstr "" + +#: GuiDatabase.py:524 +msgid "tested new db, result=%s" +msgstr "" + +#: GuiDatabase.py:527 msgid "Database created" msgstr "Datenbank erstellt" -#: GuiDatabase.py:531 +#: GuiDatabase.py:530 msgid "Database creation failed" msgstr "Datenbankerstellung fehlgeschlagen" -#: GuiDatabase.py:550 +#: GuiDatabase.py:543 +msgid "check_fields: starting" +msgstr "" + +#: GuiDatabase.py:549 msgid "No Database Name given" msgstr "Kein Datenbankname eingegeben" -#: GuiDatabase.py:553 +#: GuiDatabase.py:552 msgid "No Database Description given" msgstr "Keine Datenbankbeschreibung eingegeben" -#: GuiDatabase.py:556 +#: GuiDatabase.py:555 msgid "No Username given" msgstr "Kein Benutzername eingegeben" -#: GuiDatabase.py:559 +#: GuiDatabase.py:558 msgid "No Password given" msgstr "Kein Passwort eingegeben" -#: GuiDatabase.py:562 +#: GuiDatabase.py:561 msgid "No Host given" msgstr "Kein Host eingegeben" -#: GuiDatabase.py:589 +#: GuiDatabase.py:575 +msgid "Unknown Database Type selected" +msgstr "" + +#: GuiDatabase.py:579 +msgid "check_fields: open dialog" +msgstr "" + +#: GuiDatabase.py:588 msgid "Do you want to try again?" msgstr "Wollen Sie es nochmal versuchen?" -#: GuiDatabase.py:702 GuiLogView.py:213 +#: GuiDatabase.py:595 +msgid "check_fields: destroy dialog" +msgstr "" + +#: GuiDatabase.py:599 +msgid "check_fields: returning ok as %s, try_again as %s" +msgstr "" + +#: GuiDatabase.py:701 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "" -#: GuiDatabase.py:707 GuiLogView.py:218 +#: GuiDatabase.py:706 GuiLogView.py:218 msgid "Log Viewer" msgstr "" @@ -1996,9 +2034,7 @@ msgid "Error finding actual seat.\n" msgstr "" #: Hud.py:589 -msgid "" -"------------------------------------------------------------\n" -"Creating hud from hand %s\n" +msgid "Creating hud from hand " msgstr "" #: Hud.py:638 diff --git a/pyfpdb/locale/fpdb-en_GB.pot b/pyfpdb/locale/fpdb-en_GB.pot index 71ec500e..89cd55e6 100644 --- a/pyfpdb/locale/fpdb-en_GB.pot +++ b/pyfpdb/locale/fpdb-en_GB.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-08-29 22:08+CEST\n" +"POT-Creation-Date: 2010-08-30 01:30+CEST\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -910,11 +910,11 @@ msgstr "" msgid "Description" msgstr "" -#: GuiDatabase.py:128 GuiDatabase.py:459 GuiImapFetcher.py:119 +#: GuiDatabase.py:128 GuiDatabase.py:458 GuiImapFetcher.py:119 msgid "Username" msgstr "" -#: GuiDatabase.py:129 GuiDatabase.py:466 GuiImapFetcher.py:119 +#: GuiDatabase.py:129 GuiDatabase.py:465 GuiImapFetcher.py:119 msgid "Password" msgstr "" @@ -987,62 +987,98 @@ msgid "Please check that the PostgreSQL service has been started" msgstr "" #: GuiDatabase.py:406 -msgid "db connection to " +msgid "db connection to %s, %s, %s, %s, %s failed: %s" msgstr "" -#: GuiDatabase.py:434 +#: GuiDatabase.py:414 +msgid "AddDB starting" +msgstr "" + +#: GuiDatabase.py:423 +msgid "Add New Database" +msgstr "" + +#: GuiDatabase.py:433 msgid "DB Type" msgstr "" -#: GuiDatabase.py:444 +#: GuiDatabase.py:443 msgid "DB Name" msgstr "" -#: GuiDatabase.py:452 +#: GuiDatabase.py:451 msgid "DB Description" msgstr "" -#: GuiDatabase.py:473 +#: GuiDatabase.py:472 msgid "Host Computer" msgstr "" -#: GuiDatabase.py:528 +#: GuiDatabase.py:505 +msgid "start creating new db" +msgstr "" + +#: GuiDatabase.py:524 +msgid "tested new db, result=%s" +msgstr "" + +#: GuiDatabase.py:527 msgid "Database created" msgstr "" -#: GuiDatabase.py:531 +#: GuiDatabase.py:530 msgid "Database creation failed" msgstr "" -#: GuiDatabase.py:550 +#: GuiDatabase.py:543 +msgid "check_fields: starting" +msgstr "" + +#: GuiDatabase.py:549 msgid "No Database Name given" msgstr "" -#: GuiDatabase.py:553 +#: GuiDatabase.py:552 msgid "No Database Description given" msgstr "" -#: GuiDatabase.py:556 +#: GuiDatabase.py:555 msgid "No Username given" msgstr "" -#: GuiDatabase.py:559 +#: GuiDatabase.py:558 msgid "No Password given" msgstr "" -#: GuiDatabase.py:562 +#: GuiDatabase.py:561 msgid "No Host given" msgstr "" -#: GuiDatabase.py:589 +#: GuiDatabase.py:575 +msgid "Unknown Database Type selected" +msgstr "" + +#: GuiDatabase.py:579 +msgid "check_fields: open dialog" +msgstr "" + +#: GuiDatabase.py:588 msgid "Do you want to try again?" msgstr "" -#: GuiDatabase.py:702 GuiLogView.py:213 +#: GuiDatabase.py:595 +msgid "check_fields: destroy dialog" +msgstr "" + +#: GuiDatabase.py:599 +msgid "check_fields: returning ok as %s, try_again as %s" +msgstr "" + +#: GuiDatabase.py:701 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "" -#: GuiDatabase.py:707 GuiLogView.py:218 +#: GuiDatabase.py:706 GuiLogView.py:218 msgid "Log Viewer" msgstr "" @@ -1959,9 +1995,7 @@ msgid "" msgstr "" #: Hud.py:589 -msgid "" -"------------------------------------------------------------\n" -"Creating hud from hand %s\n" +msgid "Creating hud from hand " msgstr "" #: Hud.py:638 diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index b33e9e57..f7532086 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" -"POT-Creation-Date: 2010-08-29 22:08+CEST\n" +"POT-Creation-Date: 2010-08-30 01:30+CEST\n" "PO-Revision-Date: 2010-08-30 01:20+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" @@ -949,8 +949,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" -"s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " +"%s másodperc alatt - %.0f/mp" #: GuiDatabase.py:117 msgid "_Add" @@ -972,11 +972,11 @@ msgstr "Név" msgid "Description" msgstr "Leírás" -#: GuiDatabase.py:128 GuiDatabase.py:459 GuiImapFetcher.py:119 +#: GuiDatabase.py:128 GuiDatabase.py:458 GuiImapFetcher.py:119 msgid "Username" msgstr "Felhasználónév" -#: GuiDatabase.py:129 GuiDatabase.py:466 GuiImapFetcher.py:119 +#: GuiDatabase.py:129 GuiDatabase.py:465 GuiImapFetcher.py:119 msgid "Password" msgstr "Jelszó" @@ -1057,62 +1057,103 @@ msgid "Please check that the PostgreSQL service has been started" msgstr "Kérlek ellenőrizd, hogy a PostgreSQL szolgáltatás el van-e indítva" #: GuiDatabase.py:406 -msgid "db connection to " -msgstr "kapcsolódás az adatbázishoz " +msgid "db connection to %s, %s, %s, %s, %s failed: %s" +msgstr "" -#: GuiDatabase.py:434 +#: GuiDatabase.py:414 +#, fuzzy +msgid "AddDB starting" +msgstr "readBlinds indítása" + +#: GuiDatabase.py:423 +#, fuzzy +msgid "Add New Database" +msgstr "A_datbázis" + +#: GuiDatabase.py:433 msgid "DB Type" msgstr "Adatbázis típus" -#: GuiDatabase.py:444 +#: GuiDatabase.py:443 msgid "DB Name" msgstr "Adatbázis név" -#: GuiDatabase.py:452 +#: GuiDatabase.py:451 msgid "DB Description" msgstr "Adatbázis leírás" -#: GuiDatabase.py:473 +#: GuiDatabase.py:472 msgid "Host Computer" msgstr "Kiszolgáló" -#: GuiDatabase.py:528 +#: GuiDatabase.py:505 +#, fuzzy +msgid "start creating new db" +msgstr "Hiba az indexek létrehozása közben: " + +#: GuiDatabase.py:524 +msgid "tested new db, result=%s" +msgstr "" + +#: GuiDatabase.py:527 msgid "Database created" msgstr "Adatbázis létrehozva" -#: GuiDatabase.py:531 +#: GuiDatabase.py:530 msgid "Database creation failed" msgstr "Adatbázis létrehozása nem sikerült" -#: GuiDatabase.py:550 +#: GuiDatabase.py:543 +#, fuzzy +msgid "check_fields: starting" +msgstr "readBlinds indítása" + +#: GuiDatabase.py:549 msgid "No Database Name given" msgstr "Nem lett adatbázis név megadva" -#: GuiDatabase.py:553 +#: GuiDatabase.py:552 msgid "No Database Description given" msgstr "Nem lett adatbázis leírás megadva" -#: GuiDatabase.py:556 +#: GuiDatabase.py:555 msgid "No Username given" msgstr "Nem lett felhasználónév megadva" -#: GuiDatabase.py:559 +#: GuiDatabase.py:558 msgid "No Password given" msgstr "Nem lett jelszó megadva" -#: GuiDatabase.py:562 +#: GuiDatabase.py:561 msgid "No Host given" msgstr "Nem lett kiszolgáló megadva" -#: GuiDatabase.py:589 +#: GuiDatabase.py:575 +#, fuzzy +msgid "Unknown Database Type selected" +msgstr "Ismeretlen játéktípus: '%s'" + +#: GuiDatabase.py:579 +msgid "check_fields: open dialog" +msgstr "" + +#: GuiDatabase.py:588 msgid "Do you want to try again?" msgstr "Meg akarod próbálni újból?" -#: GuiDatabase.py:702 GuiLogView.py:213 +#: GuiDatabase.py:595 +msgid "check_fields: destroy dialog" +msgstr "" + +#: GuiDatabase.py:599 +msgid "check_fields: returning ok as %s, try_again as %s" +msgstr "" + +#: GuiDatabase.py:701 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "Napló böngésző (teszt)" -#: GuiDatabase.py:707 GuiLogView.py:218 +#: GuiDatabase.py:706 GuiLogView.py:218 msgid "Log Viewer" msgstr "Napló böngésző" @@ -1463,11 +1504,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" -"4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," +"%4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -2079,12 +2120,8 @@ msgid "Error finding actual seat.\n" msgstr "Hiba az aktuális szék keresése közben.\n" #: Hud.py:589 -msgid "" -"------------------------------------------------------------\n" -"Creating hud from hand %s\n" +msgid "Creating hud from hand " msgstr "" -"------------------------------------------------------------\n" -"HUD készítése ebből a leosztásból: %s\n" #: Hud.py:638 msgid "" @@ -3228,8 +3265,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" -"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " +"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1060 msgid "Help" @@ -3411,6 +3448,16 @@ msgstr "" "Nem találhatóak a GTK könyvtárak az útvonaladban - telepítsd a GTK-t, vagy " "állítsd be kézzel az útvonalat\n" +#~ msgid "db connection to " +#~ msgstr "kapcsolódás az adatbázishoz " + +#~ msgid "" +#~ "------------------------------------------------------------\n" +#~ "Creating hud from hand %s\n" +#~ msgstr "" +#~ "------------------------------------------------------------\n" +#~ "HUD készítése ebből a leosztásból: %s\n" + #~ msgid "Fatal Error - Config File Missing" #~ msgstr "Végzetes hiba - Hiányzó konfigurációs fájl" @@ -3474,9 +3521,6 @@ msgstr "" #~ msgid "Table not found." #~ msgstr "Az asztal nem található." -#~ msgid "readBlinds starting" -#~ msgstr "readBlinds indítása" - #~ msgid "re_postSB failed, hand=" #~ msgstr "re_postSB nem sikerült, leosztás=" diff --git a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo index 2c4ea94ad6821a6a58ae76a1be9d08ba23e49357..37b38b530f781da5a262306de61cd16951374215 100644 GIT binary patch delta 18081 zcmb8#2Y6If-pBEqPy(U%4mb1w387<$-y7)kW<1DvGY|Yg=6P{r=|M6m*~W-FKfyKj++X?m7SSKj+@bdeciy z?z*ID^xck4w^{t}i)72{jTd!Ot>J&iGcBtP)i1Cu{)i(mb);nt!3mg!t6jI^c==dR@5q|(1Qc}u?rr?e)tt;VEa*)m4;JrKCZ#j@F5(HKceo- zq@oVxq3-vi+Pw-p;N7SP{{d}$8T;~l>uUNF2)+X8GB;4 zapwBbs1X*RI^oJ7eQAyb86wB(5(@@VVI)(VF;VU@M9&f<{d;sU+ z3DihtXPc2NMRl+Y+u?br`!}JD+p#A;<9Y;pQ2!pgVTVa(s?t%B8XI*Bvs_mqiEmY) z=5&Ya{jR@v{iEw4*SB0ha{bcvpRP?$HSM*-=Cs=r75Qiyg=Q48+ymp?dOm873Q!$c z>edUfJM{og!%I=2{WB^u-=ZRuGTDr<8|wPus7U0w^;OtJ>wg^uJ?I>yv(}}k3v00{ zzJrIGPa)u<`@7}=ez=#Lc0KWlV>>1hac!Ih{8>_Ba)PoqNqx?BGW2UBl0 z$Ao?aYARRbG_1i9_$2DOPq7KMn`_$dgyc}vN~h486FJxh=b`3iC2qnBoQOZ8dOTsC z8DRhw^6i-DAf{4(9b4ji?)hV=jopvXeU|W5gR^lgUV_@fpF~aBaa4!CMJ3-a*c^MG!4&g+YXF5dn5_di z3w6P2)Q!cs1}o6PS5OU4SZd~e8nRNYd{hT6!)$yC710DaTgB4eW;{5ige!Uy4KN%)5~{MU6-P^d>{7K`mb?MT!;NQu@f`!dDKY1M@>Ve%#%t(8qR#gVh#(W%rTQI6Qic?6zeb^lT zglhN@>ijFH^?w9&v2CfDqSH}xy#h4_#i$WpgxZMS#Z$18&%7h%;uz{1P^;=uAMw|6 z`icV+ap+pYiXI$~x8Z5{SJZ>k%FKwos4cb#Taaf4r=a$sQW_L0&7t1UWgjN z<)|s$>>j@cHPzAUDQE<@p*nCMs-bg)bU}c`zNB3 zZW^lHWvBu8-TL|1TI>HB3hg*?8>&YSqI$dsxxjkTJ^p7@(!7LPrmZSW4h%JO}T^Y8)6gxo|70gO8z& zPh($vAGL4%f|}!VBj$k{a3S?gs400Ld*Y|q8JkoRfAy?8g|;{d)w8jvDab>GayI7S z0?fc|I2LP>*|2`VAy`^vR?$|RMg376k3V51j$LO4QiL6;*Q_J{yx^=&98iyrqk5XO z-uz%_iCUJKXyZauc89SOo{QaaD=H^;qS|>LZG0EmOs!u~k#zW%?tc$E;HTBZUvqkb z1NUIF8WYmpsE8ayh4gJCy4HKBWLm`hbiwoR42j2B9LHjhecds1BTt z8t95B1@)v5wO%9ci5k=fa{>0m&Da%pqLOky>iQQ^k$By$e~Nm*m#6`J?;dY{p6O6) zRJ&=YDU4=N&<%x{g=MHv-i#XgUQ~qkqek`u4#byHBls3I(w}f7c0AvVI2Uz(K6b;U zsN4yncD`GXfkdtS6ee=uMeK_yOo`@vFlq#+p+ddfHHb={i%}!L9;e{_sE&P(nxgg_ z%vW$W=1{LhJ^1&i_77vK*8k5GCUKzUMl-^E97X*!ROrt|b>KSGNOq$-Z~!&8Z=tUH z7!_LU0#k2|TFyhTH_pQzScb}li?JQgx3*AF1GnK2d;*mdAEJ%lppvW0g~kF*>=USn z-HVFEbEw>S8}*=L*bAFnWIEmt73m3h3RYlLbAF$D;%&64cfOeKI~<2vx4TjM!Vy#? zj-wh#zQkOADh{B27OLYLQ4fxxI`$x{qqUfeAEMeBbSd%gPGQoeriY7Bq4lF47)6D6 z3l77ZQK5SdN8l@{hJHpxsPkne0;i#-Y8h(PRG^-7DJnAC-TD)k5r3U{%{_1&`%!Op zxp|okLS=UWHpeyC9!pRoUXO~<&8QB(fO_zEs5x(Yh54y999vLdifOn8r{D!q3YwE= zP$4~m6L9R6CUkxrOnn2YqxawyNi0XyND4NYP&+u9`bJb_9!0hD0Zzjno6Y$Zs9f8G ziS>Uk1@-71)B}FOLhQc9Jm4JE9B#vbxD&JSMI4STx0=6%j6*;5U8vR6{c3anVjM#~ zfEjo@4#Ss`2=V<-K@E4m#)Nz_>VhKI&8QAMjtc1^*UwN%mJ&1j!~oP3jYj3nDX5Uo zz?L}Qbvf$3B24`KKT1J!d~4zWU&E+~yow6dH`oW;U27W5K-I_Nc3h0gg>T*CJ+_&R zW&(EL_zG0V{n!aFM;mX!fm;9jC=A7qTwDLnG%yY|_sdWbiMrm0YVZxzNdAHCuf=!Zn2qYN7t`?qRD1VhRO|9h3YyFBP#5;U-gIahYR-Jv8LvYx-jC{7ha1fD zo9H^v)r-2m2Gy}G?(y4D1APob`0fqN|5ysA-)NHL5>yYLK!xfks-YinHMY5lwT$K1 z2H(Z5cpTeflbg+bol(b!;vk%g8i<2KFov44CvPVH>d|`~P?EH`#e}Y->mb*On8W!3 zOvO#E*Sp@~`he@>uFtx@tVC_GF`R~fMI~Xk+e}2#Q6ry*ibT{)L34kV>mRTw^`oee9>ZC90<|ipZ#U;1 z97laEPR8x1j=YQN_-B}mKcNO@?J%aG+HZ>tBx-e{pd{&!-Ep*gL4jLefSOAmYR)&H z*7s(di#MSje9ZM*>_$E5b`z-{s0a>q>(gBqVtbx%c__5tf)Mt?bC4x(U5BG__#NhZ zU=@z1z7-Y1=TMRR9F@e~?lh}m4(fOz7T{)_iihzO?0J{@E81dQ#q+KEC@2YA-fbQ< z8fQ@VqULTFX5mw)4tour`A44t2H&IjdIjUnnVhXmo&n&YpsL)TsY+QsI`DR>WG8t`8B9H--UzmkEjS7bM1M*d2j)0H7r6sxDdBs4UWRp-NsX~1@!=G zAnQ;OxN?b!a9ktJk>oFpi{t6?VbBsCHh(0z8T>G3!A# zGt5SNt>Wff0wF+r3YHgsBx0Bm-+!z5_WpZ{Drg^D(Olw5AVfM_yx|we*4VxO0k{Re-(wkoVWzl!@J!2 zL)e-6OK9U!_k6Rb&Cb{!{TxrjvvD(O&aM5%R9sHAGv;Cd)q#hx6`sJH$AYxHAVti}m=8Fs?`sHu1zM`Q9IP3Xs=k~M}y@qX0xZ=jO(7-}{3s5Qwq4Wn8% z5enKOuR`_g9&C?s_xQ8ehx&Us5r0BW+4yJ8o}Pyx>IJ9>?!zj49yMjt4wwPm?79mCo{2?&xsE$5@Gw>KHC$j!(a%Lj-raludKriOvC#Xmcdz1JN zqY$E?IlKkc&|h#qc6f_#0`%Zwd<5rW%HK?fm!Ph{9Tn1JI1ZB!o2i?KOQ|ozN%#;d zLdRYIb(r|K>e2D*2iHRE|`K{a1JU53Q?iY8Cv9ov_t=CIZoZ6ozmh4|Rhd)zfv@5jUW2jG=nG9o3P$QOUL&XX9g- zhQFX9nD)MDcPT2zqNsN7!!;PkDO&%XKQMdrB2TBPQPecT-RUdr))vJf`7M9E#09GOx{%crNuba2dXa zdccUIW@Izaram9ju>yDEji`v_eQX9+fM-)*jxD1UUZ5}#-#{hT3Dh!a_g`it{ZREx zR6|oxk;=!j@N~?_2XQWbi@(F^pO~pQj5hW5pPK7OVIK7@sQ;wTdYwXFY<0|J^)TE< zJqP>ao2U+)z|%1GGxHI-1gBEJ4z(=bL`Coz+Sv4Sv#$(74QwImdcah~?0y6H<55hQk3{}4ol@oWPvixz>4bPxP`Vy+453o0Whf3B?Uzznj1T}zBn2OV| zH5OnmT!t+$5~a|M!g;70w&7&F6I)g;iae!7viZHaL?~TZBP&4 zG<*&;!-sG< zfLex=urn?}g?cS2dDo#jb|b1|aU6?Bun*6-I(%=Df>4%@#chyHTHs`ae0W)f6;$m*8Bi#cb?w!o08N zpiO-XhVdbsh68^zIpd%r5|1#%iqgF`?ssoo}R3X_x;SBtXdqLVy z=ECWyh8@=nQ6b*px(BnVzko`@=0BT(bi`iN=VJkuVLSZ2d;B>ZO#P#uiT@x9slS*5 zS*ZF_*Yj`y^*c~Ke-0JmW7rcrSxJfInTdM9cvQnPa155?MBITr@Gz=l-{3TCpENru zkzA)IB_)>E3OtPym!W$88Y(jVl9Lku4OkWSq5cGFIlhH`v3ZlE*xSSG;r1|lQ6yMl z=Tt_5_U!VCU?`Gp&svgad;B5C`$@I)MM?4QHVj5fN?_7rlp>m^R4@r5I7U&Qu>?V`$1$O%OJ)pn`l_u7Tk z_MotpIH6!C;2_UguC zw=LTQ?&PDfO_{wq+N*yZ(%7Au>!P!Z?MSH;a_U3tp&U_^!nQA=uPn$TWNwnDS zD~d3_$U294F08Ef1;UBGCBhP{@cROeJ#xWc5x!(;~!6bI;oqPCQl%u$VG^ir^Mq6OpWcxc{=JP{}WTilNk8w z0MAH_uvGJF=C9hW@I*@M(j#11p#|!ASBHHO1{h`n^u%Byv+M;SruFW?QX zvxm;*adx>As7xoo#X)6Ui1?P+k#@nl+0ygEnekP*qmz0CD-vfjo%Npb3cq6)5m{de zvGzML|MI@E%ct+}Uf~Ia)kNJjI!Uf(#xnCl!>gPSYp3`>%B@@TK1pdB3YKTbE}T;k zol)ucFZTJ_f5?07BE`W<0->crLI<4c%#bHg7EWvg4cF!}$8{abrk?>{xYVu)5+Fs! z7bps9%`pLqW=GPt)o^oOe(sW)*>+`syp5eRwO>}lDYGWr1~uAn#1jc~sj^CoHql`G z(451~T7@I_^k8`fODYtnMc4^v)&9B_UJC7F*8{oQ9W&Nzu7m~7L?R{@&dy0#7 ztH*3ni51N%HQCAZByx-?sAQ&mks<7db}9LkYk7d7^L0MVOC>R?fU}OR-^sL=&Ys7U;}?`qPEPiEV|#a67;{FDfOqa+CzxGZH)bpm1B#n-3ii zJF}mUq1Zd?d&l2eA59vf^^AFt0!QOwkr~^?{LF@>EXdKr{?_uEMiS3|=xi3GKbM-B>)0R2NT9y@13a@LqEJ8M+-n5^N`^A{~nT`)gmp;N_< z$AkqZQ7Jsiby?-(R~sQoAGU$+mM6pPuEl zJ3@BADYuI&BeB`hlAK@N60Y%-aZ8m)apE$^U%N9@>O>A)&HB=(C~cDLH8d0S(=gwM zAMEVhkB61|YM%&K`Xd^Nop_A7DB>~K#GZ`~?&^L9(=4--cn+UXYNAt{h+S2?v!up} zL}(!PQ?ys?>!*6fW<52f1uH)B;)-?Mu%u7p{`#FpBc#J6v4^9bS{6J0px;~N$&C9p z6gKhKJ<>c-v9R@ldD6G#$qoJHG_m>*?jc~Y^J{y@ez?#Z^_U1$c>)1XnavCo5-bvZ zXid7p!&@#wBx`)(Lb9yxXqhiu6ZC7=YU6=3q;_Y3+jd%%0O9>uQtBcV;6-Pms3(rAs8sjjNiHW zilmkExUZ~sPoTPrhlcE-`gl!OB6_@uxYzfOny=B7Wppjl_!G8qnd^3jYcgXKx0bh^ zSM7_`#_iJD-BmOZzklmHO``dJMix>yczHOrd;JHlE+hIoHDF#f^rxnF4@t!v!&yr< z7Zvg$ocQ83_vD&;=w{7K3g>9B&Jmysfc;DWyV)-JC-~)r#?xT$lBc@ zuCN*%3)JqcYFv-h?yjhePrrV9(&R>0F<|!5(qK)Mr}4%0hxORRLJ#}OoDk8A#6P?t zJGt*%r-TIbgvg_cP;FexKHyWr71qZ6Q)9huJ`t_mnAlyy{I1j+z0sF;25(~%+<%*a zG!v-`20V;e)AH*tZ_Q;5qw{l)$*JGNSO1sX;YWI>~{8l+|HPb+% z)%TU#8qz;l#+Oii@&$aE@y@qwNNQ=moa{P7)XqG+f?v^&2Utgp( z@!Ja;@2d@G`T4?6AuXc%mexA{a1HxQ^f%Aool@#iRwnl5lb*ts#N_h1cyMEtN85!W z9r5@nbC1qhCvRJI7tmHBWFs09mCZg74A-Xf&W_uYiR1rqYi8VjqCBZpVknHV%2O7< z^2yXDEm^$*`c>tLU%T(hq+TaKKk?&1TPW>k#QN<2bL{s0z3YEI?BBntZ^ItWy7BO8 zX!rvbJ4vkFGl2m^6YrjM+iWCtTLov?B|PSZ7hmwq&q?*|-t~u3NpoZG|Dj*~k)+2v z$Fd$zi_fdw&@^>Hu%>pm-YsSEL(lDL+C9I9Zv_2mNIzoqp7DA@oXYaQRA6kDSs{r-pv9TEkADS`~iJ@&I;6KGAEOa(a*EQqLmL`k8L1;VE9+|-}jvPC&OE84W zh$o!*&WRs<@#&^#&6quNdH$UIx!Jb*ZSF}V0iCPgD?OniO;2Uxm#HW5%HsD&fhQ7S z8{(~0W6z$MKhG`+mKX9Bz;{6G>Fc^qt=+*SjNqpb!|>Si^5@oFpmAx7^OZGv^YYEL zgWt=EkA%dX@ylPkGr7~OU=0g$b>g*cnJ=Z-=)Zo@a>nYAFRbyz+r1f1np(f5YWHEy z{69Y);~U=EmmIDC4f2~`F~5qCQ^=N_t>089|DLIj+yDNf=A_+GYm^^15YKu0gJ$#H z-%aL;4J+6F-=C@F?mo2ccTK6UkZH2x8z=OuPuqEC9b@00qTYwJ!Vm$ETH zeA&TC&686!KJ|mFHO`B-`09d)b6cu z_{Jo^_WHegV@ROYGR%aIRVeHrS-wwnR-*R8~d{;z%$ Kb^Z9_SmlridsisECSRBzHkjanBt?QQY?hQ9vMsWU(;nTWao^%-1C|b4$$@ zwQlOvh*qd=lWA$1S!QX?RHIq>%W2epuQ%uX9>4#mf1c-a?!D)p^Esb$znVLj1aA5` z!24B$z;zD)z3lHe&9Jsy zX{?1mpceL>~UQTC2Wp*pgq>cd+qh1*qV3} z)<-XnzzVzvFQJ|bWIttNYkTXxs4X7Vnfzq^HAI2iwfo#9is0#&#gHSKb#s>H# z*2ArsimzfC-a##7cvq9rDX0k+U>H7zdVURha7S12uM{4mLta9q_77C*B9hErb;NMu z?$%UmI!>g&7)he@A!=`LTWfYRaRX~}Yg=mxX<=oK)2HG}Oe$BB#phOtu}fQ4i#zR#=KUhKsR!&ry506?Gi< zqwaqbDHrDiYQ_IX9oxX3W`&{FXlnwhxCd6t{*R=gqM3$zVIDTdVw{I7u@&Ay561Q~ z@nCF1oQEB7F;X_pe$>RSqE5pN|$YEaU(Y<*S|td=qBpZC-DO9TakOoeaGX^!G<*5GcsFnT|Bk(g+hJUni zO)nd+qG*QNf-mn!lp`)mjU$A~>`+q@If1Ud%+(2H4!-zjkHNWrC!%c1U z$D#BuM%Bhi)O*e$wc&Lx)2KnmUDVzLjW8=}hKk#xt`9&xn1VBL3}&H=8n{WC*|L_% zt~hN_$1x9k;T8iW^p04b={q@nsJp(d1p8gMS^ zbnLONEhx%~kqOPw+rT%$Tjl7B>czYcAS88gKM+({Tpk9!L)RXf( za#Wq4kn(WiCzv0Thfx!K6!+pXRLZ+gG{-m@wV)9ggJW%fDQY5*SXWFW|C-4LI<(U5 zSQq!AW?G3VzTin_OTthqibZ9p3+hFEQ1=Z)jWZNA?s#l~Gf^)t#@6^4rr>Tb4XyZR z)H&}o*$#}_yFTcT15lsR!PpivP#=;NSQB?)J=}{e@F;4JFQFz}XNoDp=BRPHp`Q1S zr4de}5If=`RF&?x{pV2=`3V`zxq%uub*d?*G8{s@1k}VDW#T>S z7s!IW&NUiZ;V-BMZ=zNbJ>67)Cmc$AAI4$@DzyhtD}M`>`u9*7{McUq6cdTRLVXYF z%`llAi`t@TI9caEhelUA-oeiJJNCx*>E;ufjrS67!EX2^sx~5Knt{_%6W)#q=wcJR zg6hAE+WW8!^WtV0N!%8z|NK9IMl(7lqE=XfP4Q_|>Rv}}!3k8ceP}(6TFE(7M!rQI zziX%>j+|wFeA-|`;$+koOht`bfZmog9;2awcc5xv4=S~l*a(lKCU6n;;AK>5e?=X` zRm#ji+bT@+y4XV`CHf+olG-sBx(U2QCreC(`yD!r9%^$ih(%G-Z01Zm!N9mVQhhi zP)lZg z-e<3mv2nV+o`=fZ0*t`bsG8b=8t*Ms4Sa+e?^{%6yuZ?jp;3E|`7*`f!^GpT3{Ro< zcvudfXZ2$=mSQ=sMZKVYENsCKieJ5PL9I=RcW- zhmKqf#ucbk`cUU|H)_w{LJjmadhjN)drqUd=DBiIaXo<{xB++Lc2vfO6_}OhVgT_& zSj_vKavJUMXVe}=vFr($fJwL%_2Nnl#ZRynUP4XypQx1of||e|7=)n@nEnP>n>Y%! zC9P4J8i3w9G$zr|1KFsR=iB%(tV_Ja#_LcM*@PN!KX%2#sEORb1pEV)u@3XhN>fo8 z8Hw8JDX1+-pGW>R^Tl*%;8my-lE8SqT^60&PLV96R3&r zL1px>)|1$P_zG&FzZa4JzBFnVn;8v5ZABsW!i}f_&!ARt3-uicC^0MPhl#|4QK_Ae zdSL}>;=55VJc`v@hq~_)DuaJ`ZAXn#bNpgZ=QaiPWy?bCwHL#1Ick87*alz6`gjpN zcny;ns0^i`o*#o+Sq|#?`Pc|oqsHBdP4Gx{%>JLZ7j9TX`24AQV=)2;p*~EL zupXwPR`vjD0&7t(I*Qu5bJziYL!Al_pUD_(hpM$y?13w=C+~NvXmrOrsMI7qV)kq( zYQ_)X3P1K9HS-7_YKrmL5r?6ke-NW^A9leHP|x2*J=gd#GkzlK_$8xPGtHw>it8~S zLmxL)UWR(`0BXRGQO7V~p;>t%HY1*f8n6so;dA!-G3#~I!lD+L`{S*ti`ajyB!>>2 z*Ttw*`%uT_8B_{)qxN{e^-a`($1n!ZqgMV0HphmG&2wE)aUYDuDK>r-TM|FJnAE5` zkJ6!)oJI|N4L#`pgjrcEwk1xn&O;6G4C;7QqH5uaHEf9)uNP{86H&!mjH;DIsG{EF zrJ<|;^bf+Wco0h$EGGF)c*z0Q*~TG8=5Y9$|F8@z?uGtVkBp}|;-crGe+4_a4PH)AgS`*8q9J!wAK z)2wr>Mb<~EW&fAi4xjZo>mKXt)}z)Bum&$Ui*@iKYC=Dtw(<@JVdQF4)X^A19EY{B z2Wkrk<3Qf;%%Y(p+==>99YU@ABq|fXU^6L zJ*w)vp~g=`Womi_=U*KU*$Ydt9`Sk%#@(pnvmbr4sbtipa6wwC<&q%m@>DYE65NcPpnPf7=o&Z{Yhp6$l#IZ}Sd6`J zC2A!na2(dyXliCEDuatq8C`{X;bx4)4^Rv9erp>M&)65CwqykAMbnV_aY|5`3EX7t zhI&B`hT}YJicesD+=j}Oi#iR>o;5FSi4BN*o7n55(db0S9BhaiPy@Vz+N-0eb61{{2tbZdR0sI(Fr# z^STOSa06<!^F|pms}^|RQgL^FwdPr9m~5o9Ea~Q<7`B)Ubve^ zG#)~|_%j<{My1Mm(fk@VL|yNODyjjPk7IBi9>rRi_>!?VP9{#qfw%=z@Efd+9bP8? zAvC(bY-(U2wkIyaP~40v#uu?WzJV&X8>ox~y<(1K7gS2KQPq76+v1m~`)lkq<40j@ z;$f)TnYY(#s(dFMQFK(IW_BL6!Yj7_CaQSq?K6LNi^n>|b5LKJdbOK>#(-o-TP()bMZrMimgSnGB3_xW6$MSK{iVT%Lif6bO-DDg4W zgim7yUc_)LIB2dfL@n$oya(5z7V;+6=lxC<4bA+l^&hAS{l~^3hs?LXIVvNsq6gnV zt@HwFBEO=x!uhL-YofL=0vlp0Y>K^6MLiL_>HO!@(4Oo-rQ}Zxz|n7*DjttI_vxtq zOzem`*cI1d7yJN~iM!YsYrScTGzRY@9*LUB25g0|U;^)VKBdtU1OH}=EE}zb!z6IwxHO$0JYbTV>euZL-1|XRtCRC{dr&(v9-dj-R zHDA6*=~bT9L5|opW2bA6=k4SoQJCJ`KSTQQ8lmgwG72^00t~|EQ4hR`deKK1fuCa|yoOO2bi&k*2Q{%N=#R5ewUTZ7AF!5T z5d8~n>|JI%Ds0CF)R%25s#^DA4LpWQ?T4t9Ua|47sQW_SHP>6BGSC~f@*$|>ITKZU zb5R+19NXyp@1miZpG18J&Y>Ro0X5U#u?F73ni%+=`S*ZOj3J(Y%G^WP2KSvyI>UuxaM8~2gnvKdxF>1vNQCs?~ z^-a`@&tn+gK|NpRL$;9jJ02QZNpEb6)3G%!!E$^BCt>@)n-wiW5AiB&r|Y-}&!HCb z_($gF_$jPK?03>kpf;+85>OLKMsHmj<84PKD%B-e8z07GT#D=QBUGw0KQ>cCG3YWpP1v8fvWOi^x$gj zi2G10xoEH7z(sfpqMr<1csswG}C6&CK(# zkoa-zjW;kH<32N~9)QZ!NL1#g+ISW=ATB@^?c=DeS&sE_18RbMyfm88ID#7Z3)G%n zN6q}-7=pp)%&%8Cs;WDoeq?%}?i+>oVmj*i&Db4xV;o*WEws*gGhPGK#J$aF=s2`P z-H?rq@P5>c7h))`!ARVUdeK2l!r!n3w*OpzoaT>Kcn{9EZbB{WE!0BKpiajPWIV4E zcEMDATb#&+(WpJzgW8HuF$Hg;UfA~wvw{-5kJyXK$h+7XPoZ8AaM5Ha2AdG~M5TNz zYC$p@;ZMEXKXq z99v#CKVto{8*w43e;3B!G4$$1-_g*@@8Se(^NqRTQR`OJgYQ_sMy2wuHT+vMp|+@^ znvGgeA%@{f8*f4_=n%HTufApf)e(5bbab$e##s6vM9p*)MqwrDIGslg{59(NpRorv zzH0V*6lwx_*dLc*b&a4-!zt8v=kC=+^LMkM-C?Bu~ z)tbSj`T3r4x%nl&HGN`ze~ycGe;WUJko)P>iT>`G87~DkO3Rp=<)jsQW)-o*+yYN_ zVQE38<7+<6<9mPh8TaMP0)Mx~oHRe*%A5+{gxo&96S>3Ol)N%Ow_pC?0Cz)Stw7(Q z;&*)uOV0bYl*YUM^D_h7ugeDd``VO$?EYCE?&l7Cw5z}S#bciaMikDz-;^tReAAXRb0;qG`uPHuHT0z|``kBT`6&1A%aiu{47PgZ_zL1xt}CG#`lLwt8vH}#c2HP#JTGczE> z-jH2d;``XQ)OY=2GdFx)k6`bAziDxCA=HQG{;EC23wR}Dd9r5BI$n|Q$?)W76&5cj zsoGXNtIEyqrHyn3c;e=H=2mShVwP2V=2sogFNycKGdIuoa~p42?iVtE{WY`n-QGI4 z=D;lOI9}mCxb4dTU#(r+-O6220dAcapYwD7`BG1R-+;aUc5m(@Wgox#o3D;L$35sy zujOl6Il|33GN7h=@c3nX{|uiBQMlTlLTx{0Ue z`uVz?s_z~?{ky+gd1i&5FY~h#zM^wIedo`m`_7-Q!x0<;pf};-8gsj_xl6g13zu|4@%b>e0kR|yOVw{^mBuMIqdKDzj-C7d4^{J3oqoA s#U=ljgZWi^=434>$?D~P^PdEN-^jbo+(UOe`>hN2n|ffo-y;A21* Date: Mon, 30 Aug 2010 01:33:44 +0200 Subject: [PATCH 348/641] l10n: updated Hungarian translation --- pyfpdb/locale/fpdb-hu_HU.po | 45 +++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/pyfpdb/locale/fpdb-hu_HU.po b/pyfpdb/locale/fpdb-hu_HU.po index f7532086..edd2a8f5 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.20.905 plus git\n" "POT-Creation-Date: 2010-08-30 01:30+CEST\n" -"PO-Revision-Date: 2010-08-30 01:20+0200\n" +"PO-Revision-Date: 2010-08-30 01:33+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -949,8 +949,8 @@ msgid "" "GuiBulkImport done: Stored: %d \tDuplicates: %d \tPartial: %d \tErrors: %d " "in %s seconds - %.0f/sec" msgstr "" -"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d " -"%s másodperc alatt - %.0f/mp" +"GuiBulkImport kész: Tárolt: %d \tDuplikáció: %d \tRészleges: %d \tHibák: %d %" +"s másodperc alatt - %.0f/mp" #: GuiDatabase.py:117 msgid "_Add" @@ -1058,17 +1058,15 @@ msgstr "Kérlek ellenőrizd, hogy a PostgreSQL szolgáltatás el van-e indítva" #: GuiDatabase.py:406 msgid "db connection to %s, %s, %s, %s, %s failed: %s" -msgstr "" +msgstr "adatbázis kapcsolódás sikertelen: %s, %s, %s, %s, %s hibaüzenet: %s" #: GuiDatabase.py:414 -#, fuzzy msgid "AddDB starting" -msgstr "readBlinds indítása" +msgstr "AddDB indítása" #: GuiDatabase.py:423 -#, fuzzy msgid "Add New Database" -msgstr "A_datbázis" +msgstr "Új adatbázis hozzáadása" #: GuiDatabase.py:433 msgid "DB Type" @@ -1087,13 +1085,12 @@ msgid "Host Computer" msgstr "Kiszolgáló" #: GuiDatabase.py:505 -#, fuzzy msgid "start creating new db" -msgstr "Hiba az indexek létrehozása közben: " +msgstr "új adatbázis létrehozásának indítása" #: GuiDatabase.py:524 msgid "tested new db, result=%s" -msgstr "" +msgstr "új adatbázis tesztelve, eredmény=%s" #: GuiDatabase.py:527 msgid "Database created" @@ -1104,9 +1101,8 @@ msgid "Database creation failed" msgstr "Adatbázis létrehozása nem sikerült" #: GuiDatabase.py:543 -#, fuzzy msgid "check_fields: starting" -msgstr "readBlinds indítása" +msgstr "check_fields: indítás" #: GuiDatabase.py:549 msgid "No Database Name given" @@ -1129,13 +1125,12 @@ msgid "No Host given" msgstr "Nem lett kiszolgáló megadva" #: GuiDatabase.py:575 -#, fuzzy msgid "Unknown Database Type selected" -msgstr "Ismeretlen játéktípus: '%s'" +msgstr "Ismeretlen adatbázis típus lett kiválasztva" #: GuiDatabase.py:579 msgid "check_fields: open dialog" -msgstr "" +msgstr "check_fields: párbeszéd nyitása" #: GuiDatabase.py:588 msgid "Do you want to try again?" @@ -1143,11 +1138,11 @@ msgstr "Meg akarod próbálni újból?" #: GuiDatabase.py:595 msgid "check_fields: destroy dialog" -msgstr "" +msgstr "check_fields: párbeszéd lezárása" #: GuiDatabase.py:599 msgid "check_fields: returning ok as %s, try_again as %s" -msgstr "" +msgstr "check_fields: OK visszaadása, mint %s, újrapróbálás, mint %s" #: GuiDatabase.py:701 GuiLogView.py:213 msgid "Test Log Viewer" @@ -1504,11 +1499,11 @@ msgstr "\"%s\" nevű asztal már nem létezik\n" #: HUD_main.pyw:321 msgid "" -"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f)" +"HUD_main.read_stdin: hand read in %4.3f seconds (%4.3f,%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f)" msgstr "" -"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f," -"%4.3f,%4.3f,%4.3f)" +"HUD_main.read_stdin: leosztás beolvasva %4.3f mp alatt (%4.3f,%4.3f,%4.3f,%" +"4.3f,%4.3f,%4.3f)" #: HUD_run_me.py:45 msgid "HUD_main starting\n" @@ -2121,7 +2116,7 @@ msgstr "Hiba az aktuális szék keresése közben.\n" #: Hud.py:589 msgid "Creating hud from hand " -msgstr "" +msgstr "HUD készítése ebből a leosztásból: " #: Hud.py:638 msgid "" @@ -3265,8 +3260,8 @@ msgstr "" "GPL2 vagy újabb licensszel.\n" "A Windows telepítő csomag tartalmaz MIT licensz hatálya alá eső részeket " "is.\n" -"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, " -"gpl-2.0.txt, gpl-3.0.txt és mit.txt fájlokban." +"A licenszek szövegét megtalálod az fpdb főkönyvtárában az agpl-3.0.txt, gpl-" +"2.0.txt, gpl-3.0.txt és mit.txt fájlokban." #: fpdb.pyw:1060 msgid "Help" From 65642e37df572d8c78085b4a54d4ed27c99a2f1c Mon Sep 17 00:00:00 2001 From: Eric Blade Date: Sun, 29 Aug 2010 22:56:00 -0400 Subject: [PATCH 349/641] cherry picking around a patch that didn't work for me --- pyfpdb/Stats.py | 211 ++++++++++++++++++++++++------------------------ 1 file changed, 105 insertions(+), 106 deletions(-) mode change 100755 => 100644 pyfpdb/Stats.py diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py old mode 100755 new mode 100644 index ffb1e47e..7c6a11f9 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -154,10 +154,10 @@ def vpip(stat_dict, player): _('Voluntarily Put In Pot Pre-Flop%') ) except: return (stat, - '%3.1f' % (0) + '%', - 'v=%3.1f' % (0) + '%', - 'vpip=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'v=NA', + 'vpip=NA', + '(0/0)', _('Voluntarily Put In Pot Pre-Flop%') ) @@ -175,10 +175,10 @@ def pfr(stat_dict, player): ) except: return (stat, - '%3.1f' % (0) + '%', - 'p=%3.1f' % (0) + '%', - 'pfr=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'p=NA', + 'pfr=NA', + '(0/0)', _('Pre-Flop Raise %') ) @@ -196,10 +196,10 @@ def wtsd(stat_dict, player): ) except: return (stat, - '%3.1f' % (0) + '%', - 'w=%3.1f' % (0) + '%', - 'wtsd=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'w=NA', + 'wtsd=NA', + '(0/0)', _('% went to showdown') ) @@ -217,10 +217,10 @@ def wmsd(stat_dict, player): ) except: return (stat, - '%3.1f' % (0) + '%', - 'w=%3.1f' % (0) + '%', - 'wmsd=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'w=NA', + 'wmsd=NA', + '(0/0)', _('% won money at showdown') ) @@ -239,10 +239,10 @@ def profit100(stat_dict, player): except: print _("exception calcing p/100: 100 * %d / %d") % (stat_dict[player]['net'], stat_dict[player]['n']) return (stat, - '%.0f' % (0.0), - 'p=%.0f' % (0.0), - 'p/100=%.0f' % (0.0), - '(%d/%d)' % (0, 0), + 'NA', + 'p=NA', + 'p/100=NA', + '(0/0)', _('profit/100hands') ) @@ -261,10 +261,10 @@ def bbper100(stat_dict, player): except: log.info("exception calcing bb/100: "+str(stat_dict[player])) return (stat, - '%.0f' % (0), - 'bb100=%.0f' % (0), - 'bb100=%.0f' % (0), - '(%f)' % (0), + 'NA', + 'bb100=NA', + 'bb100=NA', + '(--)', _('big blinds/100 hands') ) @@ -283,10 +283,10 @@ def BBper100(stat_dict, player): except: log.info(_("exception calcing BB/100: ")+str(stat_dict[player])) return (stat, - '%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - 'BB100=%.0f' % (0.0), - '(%f)' % (0.0), + 'NA', + 'BB100=NA', + 'BB100=NA', + '(--)', _('Big Bets/100 hands') ) @@ -305,13 +305,11 @@ def saw_f(stat_dict, player): ) except: stat = 0.0 - num = 0 - den = 0 return (stat, - '%3.1f' % (stat) + '%', - 'sf=%3.1f' % (stat) + '%', - 'saw_f=%3.1f' % (stat) + '%', - '(%d/%d)' % (num, den), + 'NA', + 'sf=NA', + 'saw_f=NA', + '(0/0)', _('Flop Seen %') ) @@ -338,6 +336,7 @@ def n(stat_dict, player): _('number hands seen') ) except: + # Number of hands shouldn't ever be "NA"; zeroes are better here return (0, '%d' % (0), 'n=%d' % (0), @@ -360,10 +359,10 @@ def fold_f(stat_dict, player): ) except: return (stat, - '%3.1f' % (0) + '%', - 'ff=%3.1f' % (0) + '%', - 'fold_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'ff=NA', + 'fold_f=NA', + '(0/0)', _('folded flop/4th') ) @@ -455,10 +454,10 @@ def three_B(stat_dict, player): _('% 3/4 Bet preflop/3rd')) except: return (stat, - '%3.1f' % (0) + '%', - '3B=%3.1f' % (0) + '%', - '3B_pf=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + '3B=NA', + '3B_pf=NA', + '(0/0)', _('% 3/4 Bet preflop/3rd')) def WMsF(stat_dict, player): @@ -474,10 +473,10 @@ def WMsF(stat_dict, player): _('% won$/saw flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'wf=%3.1f' % (0) + '%', - 'w_w_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'wf=NA', + 'w_w_f=NA', + '(0/0)', _('% won$/saw flop/4th')) def a_freq1(stat_dict, player): @@ -493,10 +492,10 @@ def a_freq1(stat_dict, player): _('Aggression Freq flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a1=%3.1f' % (0) + '%', - 'a_fq_1=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'a1=NA', + 'a_fq_1=NA', + '(0/0)', _('Aggression Freq flop/4th')) def a_freq2(stat_dict, player): @@ -512,10 +511,10 @@ def a_freq2(stat_dict, player): _('Aggression Freq turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a2=%3.1f' % (0) + '%', - 'a_fq_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'a2=NA', + 'a_fq_2=NA', + '(0/0)', _('Aggression Freq turn/5th')) def a_freq3(stat_dict, player): @@ -531,10 +530,10 @@ def a_freq3(stat_dict, player): _('Aggression Freq river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a3=%3.1f' % (0) + '%', - 'a_fq_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'a3=NA', + 'a_fq_3=NA', + '(0/0)', _('Aggression Freq river/6th')) def a_freq4(stat_dict, player): @@ -550,10 +549,10 @@ def a_freq4(stat_dict, player): _('Aggression Freq 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'a4=%3.1f' % (0) + '%', - 'a_fq_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'a4=NA', + 'a_fq_4=NA', + '(0/0)', _('Aggression Freq 7th')) def a_freq_123(stat_dict, player): @@ -576,10 +575,10 @@ def a_freq_123(stat_dict, player): _('Post-Flop Aggression Freq')) except: return (stat, - '%2.0f' % (0) + '%', - 'a3=%2.0f' % (0) + '%', - 'a_fq_3=%2.0f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'a3=NA', + 'a_fq_3=NA', + '(0/0)', _('Post-Flop Aggression Freq')) def agg_freq(stat_dict, player): @@ -604,10 +603,10 @@ def agg_freq(stat_dict, player): _('Aggression Freq')) except: return (stat, - '%2.1f' % (0) + '%', - 'af=%3.1f' % (0) + '%', - 'agg_f=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'af=NA', + 'agg_f=NA', + '(0/0)', _('Aggression Freq')) def agg_fact(stat_dict, player): @@ -630,10 +629,10 @@ def agg_fact(stat_dict, player): _('Aggression Factor')) except: return (stat, - '%2.2f' % (0) , - 'afa=%2.2f' % (0) , - 'agg_fa=%2.2f' % (0), - '(%d/%d)' % (0, 0), + 'NA', + 'afa=NA', + 'agg_fa=NA', + '(0/0)', _('Aggression Factor')) def cbet(stat_dict, player): @@ -654,10 +653,10 @@ def cbet(stat_dict, player): _('% continuation bet ')) except: return (stat, - '%3.1f' % (0) + '%', - 'cbet=%3.1f' % (0) + '%', - 'cbet=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'cbet=NA', + 'cbet=NA', + '(0/0)', _('% continuation bet ')) def cb1(stat_dict, player): @@ -673,10 +672,10 @@ def cb1(stat_dict, player): _('% continuation bet flop/4th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb1=%3.1f' % (0) + '%', - 'cb_1=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'cb1=NA', + 'cb_1=NA', + '(0/0)', _('% continuation bet flop/4th')) def cb2(stat_dict, player): @@ -692,10 +691,10 @@ def cb2(stat_dict, player): _('% continuation bet turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb2=%3.1f' % (0) + '%', - 'cb_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'cb2=NA', + 'cb_2=NA', + '(0/0)', _('% continuation bet turn/5th')) def cb3(stat_dict, player): @@ -711,10 +710,10 @@ def cb3(stat_dict, player): _('% continuation bet river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb3=%3.1f' % (0) + '%', - 'cb_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'cb3=NA', + 'cb_3=NA', + '(0/0)', _('% continuation bet river/6th')) def cb4(stat_dict, player): @@ -730,10 +729,10 @@ def cb4(stat_dict, player): _('% continuation bet 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'cb4=%3.1f' % (0) + '%', - 'cb_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'cb4=NA', + 'cb_4=NA', + '(0/0)', _('% continuation bet 7th')) def ffreq1(stat_dict, player): @@ -768,10 +767,10 @@ def ffreq2(stat_dict, player): _('% fold frequency turn/5th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff2=%3.1f' % (0) + '%', - 'ff_2=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'ff2=NA', + 'ff_2=NA', + '(0/0)', _('% fold frequency turn/5th')) def ffreq3(stat_dict, player): @@ -787,10 +786,10 @@ def ffreq3(stat_dict, player): _('% fold frequency river/6th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff3=%3.1f' % (0) + '%', - 'ff_3=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'ff3=NA', + 'ff_3=NA', + '(0/0)', _('% fold frequency river/6th')) def ffreq4(stat_dict, player): @@ -806,10 +805,10 @@ def ffreq4(stat_dict, player): _('% fold frequency 7th')) except: return (stat, - '%3.1f' % (0) + '%', - 'ff4=%3.1f' % (0) + '%', - 'ff_4=%3.1f' % (0) + '%', - '(%d/%d)' % (0, 0), + 'NA', + 'ff4=NA', + 'ff_4=NA', + '(0/0)', _('% fold frequency 7th')) if __name__== "__main__": From 54279cafefb1848b23807a419830ceb0cf76881e Mon Sep 17 00:00:00 2001 From: Eric Blade Date: Sun, 29 Aug 2010 23:05:05 -0400 Subject: [PATCH 350/641] Revert "Remove trailing percent symbols from HUD values" This reverts commit b4a08af2b1ec56be83280ad12d4359c645b3d0b3. Conflicts: pyfpdb/Stats.py --- pyfpdb/Stats.py | 262 +++++++++++++++++++++++++----------------------- 1 file changed, 136 insertions(+), 126 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index 285a45ea..7c6a11f9 100644 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -78,6 +78,7 @@ log = logging.getLogger("db") re_Places = re.compile("_[0-9]$") +re_Percent = re.compile("%$") # String manipulation import codecs @@ -87,26 +88,35 @@ def do_tip(widget, tip): _tip = Charset.to_utf8(tip) widget.set_tooltip_text(_tip) - def do_stat(stat_dict, player = 24, stat = 'vpip'): match = re_Places.search(stat) - result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) - - # If decimal places have been defined, override result[1] - # NOTE: decimal place override ALWAYS assumes the raw result is a - # fraction (x/100); manual decimal places really only make sense for - # percentage values. Also, profit/100 hands (bb/BB) already default - # to three decimal places anyhow, so they are unlikely override - # candidates. - if match: + if match is None: + result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) + else: base = stat[0:-2] places = int(stat[-1:]) - result[1] = '%.*f' % (places, 100.0*result[0]) + result = (0.0, '0.0', 'notset=0', 'notset=0', '0', 'not set') + try: + result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': base, 'player': player}) + except: + pass # + log.info(_("exception getting stat %s for player %s %s") % (base, str(player), str(sys.exc_info()))) + log.debug(_("Stats.do_stat result = %s") % str(result) ) + + match = re_Percent.search(result[1]) + try: + if match is None: + result = (result[0], "%.*f" % (places, result[0]), result[2], result[3], result[4], result[5]) + else: + result = (result[0], "%.*f%%" % (places, 100*result[0]), result[2], result[3], result[4], result[5]) + except: + log.info(_("error: %s") % str(sys.exc_info())) + raise return result # OK, for reference the tuple returned by the stat is: # 0 - The stat, raw, no formating, eg 0.33333333 -# 1 - formatted stat with appropriate precision, eg. 33; shown in HUD +# 1 - formatted stat with appropriate precision and punctuation, eg 33% # 2 - formatted stat with appropriate precision, punctuation and a hint, eg v=33% # 3 - same as #2 except name of stat instead of hint, eg vpip=33% # 4 - the calculation that got the stat, eg 9/27 @@ -137,10 +147,10 @@ def vpip(stat_dict, player): try: stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n']) return (stat, - '%3.1f' % (100.0*stat), - 'v=%3.1f%%' % (100.0*stat), - 'vpip=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']), + '%3.1f' % (100*stat) + '%', + 'v=%3.1f' % (100*stat) + '%', + 'vpip=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']), _('Voluntarily Put In Pot Pre-Flop%') ) except: return (stat, @@ -157,9 +167,9 @@ def pfr(stat_dict, player): try: stat = float(stat_dict[player]['pfr'])/float(stat_dict[player]['n']) return (stat, - '%3.1f' % (100.0*stat), - 'p=%3.1f%%' % (100.0*stat), - 'pfr=%3.1f%%' % (100.0*stat), + '%3.1f' % (100*stat) + '%', + 'p=%3.1f' % (100*stat) + '%', + 'pfr=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['pfr'], stat_dict[player]['n']), _('Pre-Flop Raise %') ) @@ -178,10 +188,10 @@ def wtsd(stat_dict, player): try: stat = float(stat_dict[player]['sd'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100.0*stat), - 'w=%3.1f%%' % (100.0*stat), - 'wtsd=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']), + '%3.1f' % (100*stat) + '%', + 'w=%3.1f' % (100*stat) + '%', + 'wtsd=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']), _('% went to showdown') ) except: @@ -199,9 +209,9 @@ def wmsd(stat_dict, player): try: stat = float(stat_dict[player]['wmsd'])/float(stat_dict[player]['sd']) return (stat, - '%3.1f' % (100.0*stat), - 'w=%3.1f%%' % (100.0*stat), - 'wmsd=%3.1f%%' % (100.0*stat), + '%3.1f' % (100*stat) + '%', + 'w=%3.1f' % (100*stat) + '%', + 'wmsd=%3.1f' % (100*stat) + '%', '(%5.1f/%d)' % (float(stat_dict[player]['wmsd']), stat_dict[player]['sd']), _('% won money at showdown') ) @@ -220,9 +230,9 @@ def profit100(stat_dict, player): try: stat = float(stat_dict[player]['net'])/float(stat_dict[player]['n']) return (stat, - '%.0f' % (100.0*stat), - 'p=%.0f' % (100.0*stat), - 'p/100=%.0f' % (100.0*stat), + '%.0f' % (100.0*stat), + 'p=%.0f' % (100.0*stat), + 'p/100=%.0f' % (100.0*stat), '%d/%d' % (stat_dict[player]['net'], stat_dict[player]['n']), _('profit/100hands') ) @@ -242,10 +252,10 @@ def bbper100(stat_dict, player): try: stat = 100.0 * float(stat_dict[player]['net']) / float(stat_dict[player]['bigblind']) return (stat, - '%5.3f' % (stat), - 'bb100=%5.3f' % (stat), - 'bb100=%5.3f' % (stat), - '(%d,%d)' % (100*stat_dict[player]['net'],stat_dict[player]['bigblind']), + '%5.3f' % (stat), + 'bb100=%5.3f' % (stat), + 'bb100=%5.3f' % (stat), + '(%d,%d)' % (100*stat_dict[player]['net'],stat_dict[player]['bigblind']), _('big blinds/100 hands') ) except: @@ -264,10 +274,10 @@ def BBper100(stat_dict, player): try: stat = 50 * float(stat_dict[player]['net']) / float(stat_dict[player]['bigblind']) return (stat, - '%5.3f' % (stat), - 'BB100=%5.3f' % (stat), - 'BB100=%5.3f' % (stat), - '(%d,%d)' % (100*stat_dict[player]['net'],2*stat_dict[player]['bigblind']), + '%5.3f' % (stat), + 'BB100=%5.3f' % (stat), + 'BB100=%5.3f' % (stat), + '(%d,%d)' % (100*stat_dict[player]['net'],2*stat_dict[player]['bigblind']), _('Big Bets/100 hands') ) except: @@ -287,10 +297,10 @@ def saw_f(stat_dict, player): den = float(stat_dict[player]['n']) stat = num/den return (stat, - '%3.1f' % (100.0*stat), - 'sf=%3.1f%%' % (100.0*stat), - 'saw_f=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']), + '%3.1f' % (100*stat) + '%', + 'sf=%3.1f' % (100*stat) + '%', + 'saw_f=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']), _('Flop Seen %') ) except: @@ -341,10 +351,10 @@ def fold_f(stat_dict, player): try: stat = float(stat_dict[player]['fold_2'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100.0*stat), - 'ff=%3.1f%%' % (100.0*stat), - 'fold_f=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']), + '%3.1f' % (100*stat) + '%', + 'ff=%3.1f' % (100*stat) + '%', + 'fold_f=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']), _('folded flop/4th') ) except: @@ -362,10 +372,10 @@ def steal(stat_dict, player): try: stat = float(stat_dict[player]['steal'])/float(stat_dict[player]['steal_opp']) return (stat, - '%3.1f' % (100.0*stat), - 'st=%3.1f%%' % (100.0*stat), - 'steal=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']), + '%3.1f' % (100*stat) + '%', + 'st=%3.1f' % (100*stat) + '%', + 'steal=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']), _('% steal attempted') ) except: @@ -377,10 +387,10 @@ def f_SB_steal(stat_dict, player): try: stat = float(stat_dict[player]['sbnotdef'])/float(stat_dict[player]['sbstolen']) return (stat, - '%3.1f' % (100.0*stat), - 'fSB=%3.1f%%' % (100.0*stat), - 'fSB_s=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['sbnotdef'], stat_dict[player]['sbstolen']), + '%3.1f' % (100*stat) + '%', + 'fSB=%3.1f' % (100*stat) + '%', + 'fSB_s=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['sbnotdef'], stat_dict[player]['sbstolen']), _('% folded SB to steal')) except: return (stat, @@ -396,10 +406,10 @@ def f_BB_steal(stat_dict, player): try: stat = float(stat_dict[player]['bbnotdef'])/float(stat_dict[player]['bbstolen']) return (stat, - '%3.1f' % (100.0*stat), - 'fBB=%3.1f%%' % (100.0*stat), - 'fBB_s=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']), + '%3.1f' % (100*stat) + '%', + 'fBB=%3.1f' % (100*stat) + '%', + 'fBB_s=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']), _('% folded BB to steal')) except: return (stat, @@ -418,10 +428,10 @@ def f_steal(stat_dict, player): stat = float(folded_blind)/float(blind_stolen) return (stat, - '%3.1f' % (100.0*stat), - 'fB=%3.1f%%' % (100.0*stat), - 'fB_s=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (folded_blind, blind_stolen), + '%3.1f' % (100*stat) + '%', + 'fB=%3.1f' % (100*stat) + '%', + 'fB_s=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (folded_blind, blind_stolen), _('% folded blind to steal')) except: return (stat, @@ -437,10 +447,10 @@ def three_B(stat_dict, player): try: stat = float(stat_dict[player]['tb_0'])/float(stat_dict[player]['tb_opp_0']) return (stat, - '%3.1f' % (100.0*stat), - '3B=%3.1f%%' % (100.0*stat), - '3B_pf=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), + '%3.1f' % (100*stat) + '%', + '3B=%3.1f' % (100*stat) + '%', + '3B_pf=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), _('% 3/4 Bet preflop/3rd')) except: return (stat, @@ -456,10 +466,10 @@ def WMsF(stat_dict, player): try: stat = float(stat_dict[player]['w_w_s_1'])/float(stat_dict[player]['saw_1']) return (stat, - '%3.1f' % (100.0*stat), - 'wf=%3.1f%%' % (100.0*stat), - 'w_w_f=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']), + '%3.1f' % (100*stat) + '%', + 'wf=%3.1f' % (100*stat) + '%', + 'w_w_f=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']), _('% won$/saw flop/4th')) except: return (stat, @@ -475,9 +485,9 @@ def a_freq1(stat_dict, player): try: stat = float(stat_dict[player]['aggr_1'])/float(stat_dict[player]['saw_f']) return (stat, - '%3.1f' % (100.0*stat), - 'a1=%3.1f%%' % (100.0*stat), - 'a_fq_1=%3.1f%%' % (100.0*stat), + '%3.1f' % (100*stat) + '%', + 'a1=%3.1f' % (100*stat) + '%', + 'a_fq_1=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['aggr_1'], stat_dict[player]['saw_f']), _('Aggression Freq flop/4th')) except: @@ -494,10 +504,10 @@ def a_freq2(stat_dict, player): try: stat = float(stat_dict[player]['aggr_2'])/float(stat_dict[player]['saw_2']) return (stat, - '%3.1f' % (100.0*stat), - 'a2=%3.1f%%' % (100.0*stat), - 'a_fq_2=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']), + '%3.1f' % (100*stat) + '%', + 'a2=%3.1f' % (100*stat) + '%', + 'a_fq_2=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']), _('Aggression Freq turn/5th')) except: return (stat, @@ -513,9 +523,9 @@ def a_freq3(stat_dict, player): try: stat = float(stat_dict[player]['aggr_3'])/float(stat_dict[player]['saw_3']) return (stat, - '%3.1f' % (100.0*stat), - 'a3=%3.1f%%' % (100.0*stat), - 'a_fq_3=%3.1f%%' % (100.0*stat), + '%3.1f' % (100*stat) + '%', + 'a3=%3.1f' % (100*stat) + '%', + 'a_fq_3=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['aggr_3'], stat_dict[player]['saw_3']), _('Aggression Freq river/6th')) except: @@ -532,10 +542,10 @@ def a_freq4(stat_dict, player): try: stat = float(stat_dict[player]['aggr_4'])/float(stat_dict[player]['saw_4']) return (stat, - '%3.1f' % (100.0*stat), - 'a4=%3.1f%%' % (100.0*stat), - 'a_fq_4=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']), + '%3.1f' % (100*stat) + '%', + 'a4=%3.1f' % (100*stat) + '%', + 'a_fq_4=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']), _('Aggression Freq 7th')) except: return (stat, @@ -552,9 +562,9 @@ def a_freq_123(stat_dict, player): stat = float( stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] ) / float( stat_dict[player]['saw_1'] + stat_dict[player]['saw_2'] + stat_dict[player]['saw_3']); return (stat, - '%3.1f' % (100.0*stat), - 'afq=%3.1f%%' % (100.0*stat), - 'postf_aggfq=%3.1f%%' % (100.0*stat), + '%3.1f' % (100*stat) + '%', + 'afq=%3.1f' % (100*stat) + '%', + 'postf_aggfq=%3.1f' % (100*stat) + '%', '(%d/%d)' % ( stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3'] @@ -586,10 +596,10 @@ def agg_freq(stat_dict, player): stat = float (bet_raise) / float(post_call + post_fold + bet_raise) return (stat, - '%3.1f' % (100.0*stat), - 'afr=%3.1f%%' % (100.0*stat), - 'agg_fr=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)), + '%3.1f' % (100*stat) + '%', + 'afr=%3.1f' % (100*stat) + '%', + 'agg_fr=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (bet_raise, (post_call + post_fold + bet_raise)), _('Aggression Freq')) except: return (stat, @@ -636,10 +646,10 @@ def cbet(stat_dict, player): oppt = stat_dict[player]['cb_opp_1']+stat_dict[player]['cb_opp_2']+stat_dict[player]['cb_opp_3']+stat_dict[player]['cb_opp_4'] stat = float(cbets)/float(oppt) return (stat, - '%3.1f' % (100.0*stat), - 'cbet=%3.1f%%' % (100.0*stat), - 'cbet=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (cbets, oppt), + '%3.1f' % (100*stat) + '%', + 'cbet=%3.1f' % (100*stat) + '%', + 'cbet=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (cbets, oppt), _('% continuation bet ')) except: return (stat, @@ -655,10 +665,10 @@ def cb1(stat_dict, player): try: stat = float(stat_dict[player]['cb_1'])/float(stat_dict[player]['cb_opp_1']) return (stat, - '%3.1f' % (100.0*stat), - 'cb1=%3.1f%%' % (100.0*stat), - 'cb_1=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['cb_1'], stat_dict[player]['cb_opp_1']), + '%3.1f' % (100*stat) + '%', + 'cb1=%3.1f' % (100*stat) + '%', + 'cb_1=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['cb_1'], stat_dict[player]['cb_opp_1']), _('% continuation bet flop/4th')) except: return (stat, @@ -674,10 +684,10 @@ def cb2(stat_dict, player): try: stat = float(stat_dict[player]['cb_2'])/float(stat_dict[player]['cb_opp_2']) return (stat, - '%3.1f' % (100.0*stat), - 'cb2=%3.1f%%' % (100.0*stat), - 'cb_2=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['cb_2'], stat_dict[player]['cb_opp_2']), + '%3.1f' % (100*stat) + '%', + 'cb2=%3.1f' % (100*stat) + '%', + 'cb_2=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['cb_2'], stat_dict[player]['cb_opp_2']), _('% continuation bet turn/5th')) except: return (stat, @@ -693,10 +703,10 @@ def cb3(stat_dict, player): try: stat = float(stat_dict[player]['cb_3'])/float(stat_dict[player]['cb_opp_3']) return (stat, - '%3.1f' % (100.0*stat), - 'cb3=%3.1f%%' % (100.0*stat), - 'cb_3=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['cb_3'], stat_dict[player]['cb_opp_3']), + '%3.1f' % (100*stat) + '%', + 'cb3=%3.1f' % (100*stat) + '%', + 'cb_3=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['cb_3'], stat_dict[player]['cb_opp_3']), _('% continuation bet river/6th')) except: return (stat, @@ -712,9 +722,9 @@ def cb4(stat_dict, player): try: stat = float(stat_dict[player]['cb_4'])/float(stat_dict[player]['cb_opp_4']) return (stat, - '%3.1f' % (100.0*stat), - 'cb4=%3.1f%%' % (100.0*stat), - 'cb_4=%3.1f%%' % (100.0*stat), + '%3.1f' % (100*stat) + '%', + 'cb4=%3.1f' % (100*stat) + '%', + 'cb_4=%3.1f' % (100*stat) + '%', '(%d/%d)' % (stat_dict[player]['cb_4'], stat_dict[player]['cb_opp_4']), _('% continuation bet 7th')) except: @@ -731,10 +741,10 @@ def ffreq1(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_1'])/float(stat_dict[player]['was_raised_1']) return (stat, - '%3.1f' % (100.0*stat), - 'ff1=%3.1f%%' % (100.0*stat), - 'ff_1=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']), + '%3.1f' % (100*stat) + '%', + 'ff1=%3.1f' % (100*stat) + '%', + 'ff_1=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']), _('% fold frequency flop/4th')) except: return (stat, @@ -750,10 +760,10 @@ def ffreq2(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_2'])/float(stat_dict[player]['was_raised_2']) return (stat, - '%3.1f' % (100.0*stat), - 'ff2=%3.1f%%' % (100.0*stat), - 'ff_2=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']), + '%3.1f' % (100*stat) + '%', + 'ff2=%3.1f' % (100*stat) + '%', + 'ff_2=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']), _('% fold frequency turn/5th')) except: return (stat, @@ -769,10 +779,10 @@ def ffreq3(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_3'])/float(stat_dict[player]['was_raised_3']) return (stat, - '%3.1f' % (100.0*stat), - 'ff3=%3.1f%%' % (100.0*stat), - 'ff_3=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']), + '%3.1f' % (100*stat) + '%', + 'ff3=%3.1f' % (100*stat) + '%', + 'ff_3=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']), _('% fold frequency river/6th')) except: return (stat, @@ -788,10 +798,10 @@ def ffreq4(stat_dict, player): try: stat = float(stat_dict[player]['f_freq_4'])/float(stat_dict[player]['was_raised_4']) return (stat, - '%3.1f' % (100.0*stat), - 'ff4=%3.1f%%' % (100.0*stat), - 'ff_4=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']), + '%3.1f' % (100*stat) + '%', + 'ff4=%3.1f' % (100*stat) + '%', + 'ff_4=%3.1f' % (100*stat) + '%', + '(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']), _('% fold frequency 7th')) except: return (stat, @@ -805,7 +815,7 @@ if __name__== "__main__": statlist = dir() misslist = [ "Configuration", "Database", "Charset", "codecs", "encoder" , "do_stat", "do_tip", "GInitiallyUnowned", "gtk", "pygtk" - , "re", "re_Places" + , "re", "re_Percent", "re_Places" ] statlist = [ x for x in statlist if x not in dir(sys) ] statlist = [ x for x in statlist if x not in dir(codecs) ] From 2b97d938f1f549bfb7eb69ca7b364766892b7f0e Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Mon, 30 Aug 2010 12:35:49 +0300 Subject: [PATCH 351/641] Fix HUD bug with specified decimals If any stat in HUD had manually specified number of decimal places, the entire hand processing stopped when the first such stat was encountered. Now really do the decimal place formatting as it was supposed to work. Also, for future reference: tuples are immutable - you can't overwrite any tuple member. Hence the need for new routine, __stat_override() --- pyfpdb/Stats.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index 285a45ea..3616fa87 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -83,14 +83,29 @@ re_Places = re.compile("_[0-9]$") import codecs encoder = codecs.lookup(Configuration.LOCALE_ENCODING) + +# Since tuples are immutable, we have to create a new one when +# overriding any decimal placements. Copy old ones and recreate the +# second value in tuple to specified format- +def __stat_override(decimals, stat_vals): + s = '%.*f' % (decimals, 100.0*stat_vals[0]) + res = (stat_vals[0], s, stat_vals[2], + stat_vals[3], stat_vals[4], stat_vals[5]) + return res + + def do_tip(widget, tip): _tip = Charset.to_utf8(tip) widget.set_tooltip_text(_tip) def do_stat(stat_dict, player = 24, stat = 'vpip'): + statname = stat match = re_Places.search(stat) - result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player}) + if match: # override if necessary + statname = stat[0:-2] + + result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': statname, 'player': player}) # If decimal places have been defined, override result[1] # NOTE: decimal place override ALWAYS assumes the raw result is a @@ -99,9 +114,8 @@ def do_stat(stat_dict, player = 24, stat = 'vpip'): # to three decimal places anyhow, so they are unlikely override # candidates. if match: - base = stat[0:-2] places = int(stat[-1:]) - result[1] = '%.*f' % (places, 100.0*result[0]) + result = __stat_override(places, result) return result # OK, for reference the tuple returned by the stat is: From 099db5e7d0a64175aff1ad3a69eb20da083884e9 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 30 Aug 2010 17:24:28 +0200 Subject: [PATCH 352/641] THP: add header --- pyfpdb/TestHandsPlayers.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) mode change 100644 => 100755 pyfpdb/TestHandsPlayers.py diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py old mode 100644 new mode 100755 index ae521f71..f1039115 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -1,4 +1,23 @@ +#!/usr/bin/env python # -*- coding: utf-8 -*- +# +# Copyright 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 sys import os import codecs From dadeb82b4b7376c01b65d9d95f8eca4aa7ed0380 Mon Sep 17 00:00:00 2001 From: steffen123 Date: Mon, 30 Aug 2010 17:25:08 +0200 Subject: [PATCH 353/641] l10n: add french to localise script --- pyfpdb/locale/localise.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyfpdb/locale/localise.sh b/pyfpdb/locale/localise.sh index 7f214c38..b9d57292 100755 --- a/pyfpdb/locale/localise.sh +++ b/pyfpdb/locale/localise.sh @@ -5,11 +5,12 @@ echo "creating template po file" python /usr/share/doc/python-2.7/examples/Tools/i18n/pygettext.py --output-dir=locale --default-domain=fpdb --output=fpdb-en_GB.pot *.py* echo "merging template with existing translations" -msgmerge --update locale/fpdb-hu_HU.po locale/fpdb-en_GB.pot msgmerge --update locale/fpdb-de_DE.po locale/fpdb-en_GB.pot +msgmerge --update locale/fpdb-fr_FR.po locale/fpdb-en_GB.pot +msgmerge --update locale/fpdb-hu_HU.po locale/fpdb-en_GB.pot echo "compiling mo files" -python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/de/LC_MESSAGES/fpdb.mo locale/fpdb-de_DE.po +python /usr/share/doc/python-2.7/examples/Tools/i18n/msgfmt.py --output-file=locale/hu/LC_MESSAGES/fpdb.mo locale/fpdb-hu_HU.po pocount locale/*.po From cc4f8e2beaf42753036101d9b41e4dfbfd688dc5 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Mon, 30 Aug 2010 11:55:34 -0400 Subject: [PATCH 354/641] added some intermediate output. --- pyfpdb/XTables.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pyfpdb/XTables.py b/pyfpdb/XTables.py index 6b06eb0f..03b18073 100644 --- a/pyfpdb/XTables.py +++ b/pyfpdb/XTables.py @@ -29,6 +29,7 @@ import gtk # Other Library modules import Xlib.display +from Xlib import Xatom # FreePokerTools modules from TableWindow import Table_Window @@ -37,6 +38,7 @@ from TableWindow import Table_Window disp = Xlib.display.Display() root = disp.screen().root name_atom = disp.get_atom("WM_NAME", 1) +icon_atom = disp.get_atom("WM_ICON_NAME", 1) class Table(Table_Window): @@ -46,7 +48,12 @@ class Table(Table_Window): for outside in root.query_tree().children: for inside in outside.query_tree().children: if done_looping: break - if inside.get_wm_name() and re.search(search_string, inside.get_wm_name()): +# if inside.get_wm_name() and re.search(search_string, inside.get_wm_name()): + if inside.get_wm_name() and re.search(search_string, inside.get_wm_icon_name()): + print "inside = ", inside + print "\n".join(dir(inside)) + for atom in inside.list_properties(): print atom, disp.get_atom_name(atom), inside.get_full_property(atom, Xatom.STRING).value + if hasattr(inside, "window"): print "window = ", str(inside.window) if self.check_bad_words(inside.get_wm_name()): continue self.window = inside self.parent = outside From e38edced85a18e431d977fb26be333c2a9759e96 Mon Sep 17 00:00:00 2001 From: Eric Blade Date: Mon, 30 Aug 2010 15:54:26 -0400 Subject: [PATCH 355/641] Add FTP Summary for a complete tournament, freeroll satellite, with multiple winners. --- ...roll-Satellite-MultipleWinners-20100830.txt | Bin 0 -> 270068 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pyfpdb/regression-test-files/tour/FTP/Summary/Freeroll-Satellite-MultipleWinners-20100830.txt diff --git a/pyfpdb/regression-test-files/tour/FTP/Summary/Freeroll-Satellite-MultipleWinners-20100830.txt b/pyfpdb/regression-test-files/tour/FTP/Summary/Freeroll-Satellite-MultipleWinners-20100830.txt new file mode 100644 index 0000000000000000000000000000000000000000..6ba648fd33daea7d95dd789eed9b1b775d0240ff GIT binary patch literal 270068 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%0D}TY&*GeFQ-(@t~$rll?F5+f8>u7`~Lmt#Ezi; z(zAKC5k)Kf$6KT5&Xj%VoOU|pQoW|^MR{9{b@N>f!e$Dhu`5Urmfm@8Nu6*%o#$zC zi8Qi0JKo?KI(~O#qzLX=9z@v~GDAf%*1FP1@T7_IzGHH|_NMaSsoiLB>uC%d1yU=x z(uAlq_bIMsslQ|tbh8mGFYNx*#?EpEtFx@P#NU1~Z6qGF(PnmL@Z^ihJrR#Na~{Z6gwFUPNSL%_BaJRi=Al6Wiedn$|W z&>AnG87Zesq(kE&#a5+#|1y@HQTJR3jtK9EzR65&))Q17JHS0cZuRDc-=F#L8Ql2Q z@$!K67V7fTo8r*G?wo5a=o&i-4Uf%pR~~F1OzCGANnKk=S+GU@?+lvJMtgonjnF9i zr&-p%R~9_!?%R}KpNbT))~w63*PzHk7yru&hTHaSGev=&00q%$>uql0M4_T@e?g1p zQ%_WtAB@&SHNEsIU4Pm{kk1fFijM}j$rLWtprnO%KH4v zw2Fq7;~;0GFrl4sJsTqt#qA^L@-$i7X0w(+cc%DGFw_=bbfrVRtFNbT*68o1USo@% z4yrJKB-yYO+TAG`<@bg@pA8b;?2bM=zWP#;q%2RZZfUS&8CWYEf_^r8LhYbfS$tA$ zZ^V#?=UzuQ{CqIH%;V?fK0A5}nrOpmA6TOF?7pr|+tXUSF-Xh(;NL7=)|-kaYF7d6 ziV>lbwK{uJOUx?PZ)F7vD+2Yio(#2`p_aBRv?>=!{%y32$oKYAuS)a-hlHL=4P z9f4bPxdtA!w&)fCBGuS98ZO(ZTJC2dr{MUCR> z2140=*3>O9CAl?UT{v*zCowl9aq9{++<_n+`Tsk(7FPX@!>hnCDG zeYoo=Qs<=5`dH#7;-s}wNY3EsP3eD|@uAXlr&Ns~$)_c)vcg@4Jtj~96 zt*ptm6GW{%`HNQKO}0ioDS1!!$n=xEx24PaQsUxYU-tD@?~CRI%jjvNpfCS65=^u~ zw#oJt>SV`8+Q61v*&4z0)jXSyVBGE~(UA=lz+PB;G<@CXdU}@}J>q!|Yn~VJ( zG_2+FTYV}ri+7>*j;6lUr-SxSW9{IB+Di0)(BzxYg=k=(42JZY%m;h`m6hM!gW|c6 zC$SG%$ca>}e$rFul_zJ$o{^<2UU9YKA5M`&Utes&Wr4H2W?`5 zolCta@{T@X4WPWnP(2$OeQ;Tc*Ta>$>tQuRy{H!#l+BU-94q#`6_s;YuYNI#)kQ=p)qjl?7<(`vRqn_LHNL7?f8vk|LdVl)sf6Hg}tni0;BYC{% zCG2NK4!CF4cvsTYn|e7to~I_{JR5*v{{<3U-kRJg0$F3 z8EZ9E`_IcfBbDn1D-DVynS3JA>R56endk(2;gfk@)-vhvYpGa|>h7SFc$|#kcjnoA zZEK-jR+IUkvW#D*r|1BBBwoP2ZOeFrrL~RKBE$WZoAs$=jgXqqCPO*`7MWh)!n#uL zzgbVf8WmJrrU!qtFiC?5ZBk% zjyaV2Y-)&5+F7_e<866;s^Cihu?fulM6kP8_vUHic{+V0X2g=l8>{2$Wr?2HgdQCq$GRT_r|z04BqiNtcreE zGrRs~3-9do_vVyc`R-u7m^m4vn2_J;>Fr?P#P9YP%!A^8U0NmE;MC7j7y9+N#2n?N zLTjxPHA3Nfldu2N&;2L~UGvl;Nz}>t0pr^~A~kaVZtgc+39OyaHS0DfGMXvqtYT?N zy-@bc!8m$Jb{i{gb=CG6)Z>Sfv?N`%qP8kM!fm(T@2Nbr{lU;IE|LX~`+E+mcDI^A zo5e$#%Qk&Ff9EYQ9Z$V5kz;b*Xw1UztrMi}f67S6T9r!hK=3}_snY#tr9oMg-QD>j z?qUNEM@P6b)jRgKry!2&aEUeF-EeIMY4}H@iZn$Ql+M%&#_=a;o80uU)`vR5ne}vf zx=O0&y8pi(ozkEhX_&P`C!Ik(F?~DJi{A1c$8a#syLE%>y;+mgv^s3)r7Z~HK<`&v zdn|g#%$J($slB+g6|O$pDY9fDemg0>K3d+zKy$HcSy1NA64@~aTfRu{+q1I)mG#+3 zx}YoH9q0MUrrK75u{*NecfsZp$+3H>t=l~Yas4It0e@Epk(rScvh_)@*je#pW23a! z`fjmcSo*Y0qf=T6*48dj1GSk9<1>l|GgZV)!osAmg5=m z7G#)gX>i7|9gCexGZb;$dO=zQ!hNQsZ?c)TMzChFkr#x823PsxY#oqa!X;f%Zk6CORM_Ls@}GOa%GjA3E34gB}Mtq83gBWEE(V# zwAZK>YcZ7luldaCvJ5t(U3u`J7er`d1@nMS_|HTl z5Oo!~Zp6;0gSc21>Bd{xXM=IP4sEXnug8~+PE-md^X}92`Hb%CK??oa=~y1E$43t& z!Y0;lrMwwrDY<^185;ZlO&L3EHF$T_=)PDBELoK56DL-7R6$hspV(gb>UM8IRa}Rz zqgirGChfcJRMRCM;--|Wl6;7@Q0o2t=`x;Lho^Myt{P7*yVy>CMuW;yY>(#4_Tr22 z#K>{}qTgF56df-Vea1)L@<dk%hGXi`GGmWNCjo^t>aSthg z=Sm}~6HM7hup|vSvU+oW{N*;@_^DeSERCFPh{Htpw>%i4g`D^zr=00WVUdymGn|EyfDgo;U@1#)H)_=#JO5tpww5rhaHZ1Q!;l`}GC0MZLb=lZ(Id`e!_xKHBzz zdv>1xcdUW*nA<$IR?vSoGaLt4oC61H~M0XzR_)V zD~${nklXC&?uto9ZC19Hx(M|E1>ToXSfC815; zb8PNV=SuHpIa*(1?A`62uJ86>Mh-tbxt2$2M9!j6R?`>r)Q-D5Zz83vfznBl>&}~V zFiuzI-E3($sJ)seBMYojboAMNsPO*O3NCMcS(WwVVx!3bICXe;|^5kcW&|HW>9*^vU85Ly3FUBm1ftqiCy>b^2`Kx?3|m1M197U&E8CSJ2WMAku$ z#X*Cx*jBIAhoy1ZVsz_TYb|{|pJhKY_8#4^H!@{4($m^Lw9Ho*gsw-!>SMizqL&-% zBP;vqGS0Q2T6SliWfeW0)@g0FLcNBJBfRr)(6@T4Mccxo89Agjivlt~9;*_*5?4&y z*N8=vVR<#aWBSAW|<}L6_iKIm6vGOL-{G*>uuG6!ytT&zvgU5vA7SdDRqeG3Pn!m~Ulb#x9kkO&Wck|nQ3M);zuZ%|^|EHO|{_b2f=7&?$r#r4t zmm4=(Lytx#dT-KcAGF2D1(yA3S#+P;J_{V#g!P9rv(P6_=8eFYxBul(C5^iyNj)(r zS_Vy7w=EB~Dz{?pEu%->EGBle^0K?)pUisE{;U=wxjm}1c7H6cWW10M$zVF^EF8dI zV`oHO_FmG=E;aD5_~rMPuWyDMx}T6*q4!TNq8y zqTMeTT-R`xfNkj9UH1{qzdewlEGt|sqYb5fr-a+iI7k&J8 zK09kfa*>ImtY~A$n6loQXQdJeP2VY{ckGp)K7&1@^b0@S0zC+mBG>IFYZQLZrY(|Y zt?ssz*e#^VpubLk+e&00nM^j4E_m~tV`|8dLUUS(B-7q?JK+-NlI)3`R1*o87|PoV zW#iLRnl>K!V&?F#k=^H9^E7$IQzqR--i&rfkUHLK{NKYPYuhz?NrSx^ebG3~K3RE) zQa_k-k=5(cS2G?Fl(*CRiB6tne~6-GhlM7RW#ckD2-bpFGFkd^Gr|ull-~Ss4wV;kQR=q_RCUeo^eiPp02(woaTtfih%JFeIfr44c~QE2ahuWhN7NVg}` z%0I@Y(1J+zKA&>hAigjky1svM^pZCYWe-(R%_vy52lQ@B06y!@$dwX+CHr4 z%tmPRk@CEi5f7gIr;Ls4{$Z;-y7dzApVC(*m#41JOhdIbJRu@%LUgx887YL%tQS5x}B^5D~l|!Yy9gvP{UCo?TcRf$h}W?MiVbU zqoQ!vJ<(pQRv7boemy5%wY}zl*GKGh-YKJ8_VYnI( ziq7l|B8hIMH>0Bo(dgRuo{#*nI^;c+A}JfMP$%+(1;$oGF}PqY0d*n=oXJXc|`}pPfb&boU}Ze@T+=+0@I z?z9_^)zsUAsnNG-ZVM^9GvgGm5_gRqU%M!p*YhL<{}Hm@mAjg%J5_%h3*&!&=I8C9 z)KflbWM3|xlg-|1zO}Q)coy<@c0{Pn?z#>twr309zh3mStS_8+B9!)=@^m@`_p_F^ zt#|4sS%bV}jipX2ow}sGfW#~6E1~$fZ`NQd%E=J?V z{q4lavcGX%lg}%sga+d0uKeiT`;i;;O8kpm(eCqk)8&)Fk?pq6w=}E3;tqFa*M4P7 z_XFRX?6?o7CGRd;J=aoHz;}6X=E2%~JAc)KCw-#7tRY(Z`{n$E(Jc42&Yz|wGUn-J zK6Z1|JI5W~f*@LTV^dM<-XyzE7OZ*SABp(WcTWnw%vQZJ2S;GvTE7BB0W2ww1IwTN-JmFJhiom zTALMWg~dhairA9h-I`tN7>&rl+gp;UrT3S@X?|VS5P;<$Srjo_;fH%wupOb0erm8d|d2oeSOO zYg-FNC0jxK7{*RhZjDe>ydE_7W+))mz&XEA0^6GG=UI`ow6L|>*0P==JhGqu=N5f7 zFW6n)bfD8ot7E!vocKQ7tCzOiQq&ZyhTk2OlB?a=i8gCh)TYiG8|;{|YgWp2ADTCr zb5u_+XvUVev%kCh+6`^onSMzha@gB*c!xXA)OkIc=4NUbfwQKshqL1MZOzaVE+${I z%51EaoZSN#5401pnxZ@3_h$^Tw(ZEQMc=cj=3~vQRZg0q@a}zQ-nkF<+nMW$OsI>z zCUeQTv-gzp4xi0)w^2&jgIVF6SjZU(+HB_@y0k<2dL(}G&H22c{$OYX_DM*z z-On(OwDV*zK$ZB~NFy27x@q3E-CkbfSrW?TGw35a9&PVlr+!k4|LG0tcBD?MQ_2D( zm&Byc((uHC85w=!lsUXkkDyeYDME*uSd8`B#K56`)MB}Y5YBRhdv+bCJEPq zX|}`%^Neg)x0uF%+!n%PD9Y&hGu<88I^luX{A5^sFBwbdtv6$myUm&SYR1C)kG(^O z#wWaPlVn8Kc27UPv}Js|C$cRDA-08Gzs)$?8nUa6A5AzhVLtX?%xbBxIT!j#Y|9L? zOR}R2U*62RC$8~oc$;QUp3YhqZSBsWPKu*v5^eQNYedT1r^$_!_OHx7dhxnvvn16} z53SgoM6<28V1Jjz>P)sc$yukqu)LK2n9`FbQuh7@7xV&&+;=5Y2~DlF)~t@4S5DLc zwrsNR4mwPmJmHKtw^Ohoc)C_#XPCN=FFmt{%?{09*GR05#O`0$HMF0dJlP)CrO+j_ zlRenGkwT@BK!h-(z&1Q z4`c1T8VY+k8iZy3>KJQkJsKQvJz2Oq2)ZPZbIR62Ozo6YEk!k`0mny!EEcIl9)>ql zlO?yiIqgR*g?>q9o{^lhO-rbQ_ON=+4B;izbZWG=N5-p*8zb*`T=5_9qxkb`2$4c_ z<{d_l^+w^)SW2z9coUA1WqQsfHAo?4r;JJo8Hz&b(By;N#v--u%gzeDyR!;1w&n1hHe<^n19!-Ik9+7G9_MJI zc(z&9su$`E1Hb<@`SXFGj7+ zlFDgsr*rmv0`E5(_}{3~4cvGWqnlzTe zjrchSvI%hWz8+4w|Om|umU8?TC1%^ zGT@=lFZJl<9nVT|)`cB~=d)I_2Uu*^^^&U}p3XazuWP)Rp2!owWB=;;x|Z7$?5oMa zvtM&vZuQU&isbWLmn-WnEwK6X73F4DsLdL0WWE`2ZfY?@o`<(j{r2b~5;j&rEE_jM zvU6`s&$i{(uD6$OcUOy>th8$#&x%9xg?gf!ByIVf84tXl|7;IDzR(XIKc&C8KaN6S zY7P5;@soxrRr(Klv z<*cz=5pq6b*D!tjG%?J3x7H?~v!>1K;T4i8eR^s8)A8>($kYm!{9GY--mzUMOzHsO=OJAd^Z4JS{h*X&=BK5PgYL6mQOs=Lzj-^u z^_XZg*5vs=WJJY z?4JGdSI65rqN%Y)Q7kPHO|g8?n(P!DkgUYq#A?(ne=$hknTUh@j;A9-cC4-O@yMq4 zXU4BC6fAD^=t2o=l{TvoK4cNC!mk$V+mWwcft~p7mc=JboX|e-xAWvm)n@FW@|=wz zvDe3M`G+$Tnfnihe&nIDSL~3Gd)rq$9GyzPZ&b&Fss0H8xA{$qaUB!ycPF zOh~Q7?6Yp7fV+HD65(t;Iw@Y+$8JlfgJBK$z(`PS{pYi3zzRtK4kH^^W4R!o|Xf_tsT0SlR+suf!A?iT`@9gsY ztDzFMDO_kLvMHy>*Mo0cuckbbmzB9lGv$bep?~M{$C{JxEpCH*k_$8iH zM!9vY(r>1g2;JITTdoa}03-eWmlfUed-H7c{f9G4S%#HmTj#4mhvdb1?7z~*)`$h4 z_sUrn`*`@ga&2p}4b6mYi`UGo@N(9@&q~WF6~TTwb9ywTuMZ8mHTqUZpIoh?#_a+BG4@9gtD*e(R8tf*_gC}G2;$2 zxV0l`U;QkN@XRK<(mS;%s&huiN*IRkFo9%bip`M-aLE(@5Pr zGh?w1KCu6{mDF*P$Qi}lxB7Uv&7G_-=Kt%O|1b1TEE_n-gikLz(a zs^wmY6XCQJjm?)cE_ZvJbt1{T+iLVTGrMcalUnk4=%++I?F;TmQX_di=Ac8VKqyH9-5Iz2%zv7^kT{r7X6M=EAFj7CeQ*>$};7kcD{{dFke zy7c*l+CCpig{Jw4TO(4@Z7OiEqh~#@%b!la52x&d`Mxd_dBZb5Oy7PkC*xMLv-UJ{ z^RL%(wzrr%bPhX)jqNtQf6aeq{Bdi#$B8FtA8S{n?XWA^2(({lyH%ZiSsn(wS6RR z03Ua4T=$@jWB{QT_WGU!-ZpNg7EZ8x#WJ&IYa?yFk1wn6^s)liJ>8k7Vs*$3zAm)} zs1@?&i?5b9i@rAqio4ly_~&qj@9UOgRVF64midnH#k6jPWt+L>M#N+#EsF)+ zn)Yi|YawN^_+vA;6JhmMYiz_1XJ)@lL}JI9mSWL`-ga+ydph^K_#-Fxr3L#GFUF#9 zn~8IV*F7X}n(b(|&fjkwVEf@|<%S6KblnCk+FfKP^`v+EdC`}iJF|MX?I*Khk>IN{ zi&N~{>|BwQD*;<0BVz%a`mm)>hhG2V@KE#`>*DUv7;5677@N}+JFnFF^Vmo<81ITl zdG0=KOK$VSXC&OY(rM%U>HW8(Cq9^-jpg5u2Cd-Xy|rcAkDh)q;}dBR`Pt~t)_O2p zA)h$h7rs9&+0L7;jZCrHw9Cmw8S{e~jTqw1FMDL$kGI6&ZMv;9y2dSDKV7O166)+D z7Fhhz@1{iCYa99-e;FH2%`G%1kENWoU`6bJ`Pwn0{PE!Rc)TrVV@}UHz3Jip@I~H* zB(vz0t+B?u(@y3--eC9rc~?=*gPe5vROzhj$=1 z?z;RxXD;Wdr!9|NN5&hYOxNGcU)SZ{NBDGFK=n|+E`K}{Pb^jJedF%hO8f3dA>a8A zG~C*Yt?{4JtJzz%b46oYu|fDUscfQ?I7%tIGKR?}Slr=_pTD2k z><+M5rOt!F;LdzM8!9dWEn}}mTeDZb{Z%>aP@_8;AaeV(#P;!r%Sz|||LZ>N>F_}9 z$L8G>&oA@YXxz5L>mdWLotxO$%tPR|CNQ)XKW`0+lQ zDaeLL&&!>yC3hQ#I}^z^zV4AkO}+v=uS=aPQtmv;%9ggh+S!O%6s!Nu&M3(i?=s^{ zp%5{Z?Im^S4d01R^jv}#QceRo`-`Ja%u%5$i=H{xk6=kuR z@rw)9-G_*!`~J)`_WgH9-znEO9wxWgvnLg##BuIoIx%tPKTy?4G>DgC4+wu)Uc z7S?qOxD%~dMfn$BT)wYseLUsSaLpVv>nKW&q0y`%da8&2TOWLM4e zeVWINR&(0H4wF^=b*Ys+d7#hzFg=Qw#OhmoTYhiK9!-qn(d9Rux^Da4%qw)lnE~M)OzV?+y;GJPM^dobJpQDf@$F&Q-hS1*?Ijm zT`Ugp^^8zv-)A$9trJOoZ?a^>RF0$a{bGt5UQdKD8RB&($+rGq1NA zM&qp!iNhOk8kiO5ztc_^rRx0g_dF=+s|r-15YXvj)t-C%JcsAA~W{po2?~>i{hD=&qO3&fZPq@5nM-Pg0RaW?_7bQtFUqYW;3#G_|j5 zpjh@nGlyA~;@7LodzSLWMcYQIxxEHGZ)=fzEK4?+c*=Ddz0JO33(*xM8~)vTkuvz8 zQBvOE0tz?UD z#<;bpG{dv;W8sN@SLU^rnUk+8@mg|cuw)yZajKTlmU*u_9}8-%^c`iTB3i)Jkw|;{ zk5Q(MeYx=7ce6e#JzCD{|8`o)87`jD%7E7SYGx-!qRhy|;&&{Os<@6v>7Cc-s-)Da zuwht2cD+c>>lV;$VwSjyjyu;S?R+~cMqiO3CmxY?k?D5o$#-`w#rjGn_x6|CJWStz znVKgTMXtR!Pv;GQ-t~j_y;{x}rJUl#G%S>!oBVeV&>ll|Z* zk6d#a{Ncz@Wh|nlpq`BV;4*&qosvXrt+$*fo_keE-{rfOznpTJf!~fNgTwsg`;0`l zE{cSfU7OtbvL`L9UgX-dX;HNB?X0a8rd5{{TZ>)T8!G;Gk;aiD`d*aMB5p)~=J)T~ z`gD3B6*i)K-GY+^o+W*p_<1_xv!eg5H}ce8m^C-sl{6iDVx{Q!uOo3z+KkM6e@b%O zh@0(pEGgwr+{_rB&9^sJZj_o$iu02%!-m;=UErHiD~?jh+V6hVdOYFeyvh5z?wt*U zZ|nz09$eQ*>_!aWwwy@s(P=>^Hlu9+mH8;b9B@nCSAqv()tr2jT91FGz3Y*rR6Y$W zn}?h%?03e-uUy@6r}mwx8(W%eAdzH1o;;U&+KYa;8Q$7fBGqMd6>4CK;7GXW@{hcuq``yrU`}H5@`DfF@`YA1yLG2U; zE#}R9ZiU#(e)qTk4K4)u?o9_9}8{1#aoL@}MrIXe}tKZKEMR3l3qJ8@AR=q)W5$kz$b}zoB zZ@-;hNaN0?C&>Tvf_v`Cv;xl$&D1(9;^f?rUZRGHEL^ws!^m7#hMY6|l8aqWQ)55ryH=E4S+jJ1= zllw$Yi?`=#<(-JwxowFqb@P({Umi0H|I2Dilt53*6ZjC-KAiGo<5;29MlFwJk+`#U z5aSZRTTX9HTFD+Z8~*RNC@wu&yWflkpwm`E_8copMep8~w>DWz*-y@h@hm^Pk|M1` zKJ)X)XPydQlT{RbziSk^bbsn5d-2Uh`fPb*g;*Q^t$!PJOkVtS( zUbjc58;QO2lS6ub_31oAQ<3+fh<9d>Zr7vrp#9%tRpMOh{b=@+@>zTAiPp6bs{2Iz zZucFDf|_Y}*6`_#_bjRrW%mlViW+QR@uKVP(&pMib$#ciK6@@Tc6T(gxDkX;s%yQE zri8BtFP1jW&8Ky)Q!+aT$!?f=cJd|kKWTp>?V+?ov7^GMbd zg{n~N+nJj&v3X=bUbp!2G8)#$ws_7m`pwwcR8~R1=USwONTpn~+jC2qdsv`?g4aUr zN#EGn&b%A#jxW#V>>ygyt9XsL#F?GZc0`p)2<>fjrKNa87Ibe)e|BWGwvNc<+lzgZ zx8$%QXyC;|=6kGnI|6Q(A?HwuxvflYJ;>)gH?Q>9uxqgFjl{9q90O}&`s*P?G}V@z*`emuVxT5EhYae8s4>~QS)U3n<61V{jsYWG28 zlC8qJ=o@Jc?*`Ft#UGLmmio~$JAIbojBzCC9n20aT*M$po+ z3ij4{^N2QQO<6-XFFl{%u_czqTkpf^DbXzZ;QZYC$6TZPf1Eb#BeTtT=4;#a#IScN zx?~^ma_jCpc z_U4K+(=)=SFOh18rdtg-g&#Y zmeZk#Z(UI1tZ-TFzOgCh5=Td3V0^ z*QxD{D)o5dV&Hl2WOb18%1!hXoeP`26>96mJ4<#Cedk2xjy&z$n-Sx3RJgvAHfm35 z<hNYr7 zipl_TnNNS}**}Wv|IREH64SN&QeF3|?tW0Te_W%B)8w==e9t@rl}b1kmzn_9^Shcs zYa{asTw>a2eC1`jgB|pbEi>|c(Ny=}Ei%dOK_ey9OYGZOr0VZy{{5v|6W&B zVc+SHskD^AjRc~()N_1P^PgSp){~7YQ$^Xf=6uUr6<3n+O5OU*I=#Dt(mTs6FLu$p z!u9;ThZfsP+?~~)>NPX*XPsN*(%sU8cMGrW;hI-k5+&0UZ)&v~28K*ctxIhE(GT5A zsPk!k&k|Yj-f}UgJEjhQdiS37by++jfTuOfyld#})b+Bnkwozaolk#N^s(-I+8@-{ z-tTs5Tuf@6Ng%wW`n2|7&N`Y&+C&1>(~u4%u>TvpM@k)U`}loD#P%(uHEHZTA1y^P z>|scCa=^1cdrfTHPZt6$BsNb?IdR?TCRg*SW1iM4Y-O7j3ruuyUWpo&y z=Hptc7|QcoFl;1zE7nSC?E7HBq#hBr$gcK$ttT@~*5*#}+C_1%|4uJ0U(nZa@uTX4 zk>y6UMsY1#VzfiIw9hT(#oHt4$A&?XzHb_g#h!DAQ}tt}f%|5&NZmYjwahVXC#7lJ zq(uT6ebx}3zbPD}^H4hqwJ)-(w_!i8IeLF$U1_+r<6_xs)c$j={>3s{;5w7}Xv+Y} z(#?F@Ldm|Hk%~9aHel)iEqD|IS=1XxJa^$?$cvDho|Gg7K zzSVo5Y%~Ax_rt;vZ4T4Cq1UA|c#84)rmsNLI%+~5S8u~LeWv4!`ks|Sjvw+>Lx{n$ z=VkNq(~J;FU<96y*Z)*{PJ6hIU&1rvlZhO&eb+SyN*t^2s@(U04&qNuj14~WWprHV zZU1FtCfmU1UPJ4sknh8f$;is-i}*Mr@oHH^U}SOVGCj>0X=9I}^vLtkFnt~*HRb9E zJGSv?=_9;Ni}`CW_%l65p96VV*YR@zF_iVEV5I1d)At{TGGPqfEMRtx4fCzVL+IDv4= z}OS zGbVRL14Y-T3N&^Ko>1Gg@9X9Edlmx>tuZ4Weq_Ya#<}*;{WjA>+S&CYe&moyhJN-i z?00iC-;vurf=Z&?04FPQQUCYttsd+Sih~n;F8cM~MmjEvA|?2kFAIBP+4U)nyVdUA zh?Dv+nK(9YLtNLleoya{3AjBJw$43LQ1stv4VqI`xww&jML`D(kz{lbY3pv@b?4Kn zR)yX7vgmg7Q=j#~b2Jaz8h1xSuf0SDC0amQI{%RShKx8;qEA_{O!!kE+1_KrHN^d` zjdq4<`itFu2s!pkyvRiUXXRoIc8_iYn;ysBN&ri`oGGU ziYchBK=X9-^wZLt-G@56TAU0_8(R`SLt|#K#zz|pe}7z~teDF8B3>{}KHAsYW0TX7 zed-y3|ZgRH^RzjPs5%4~@a#4NbUUW6l$ZoZEr?~MPT|%bs=aDyI)ROe7rt*%=iPZPX zg^D12F+HTsT{e6TQg`3>aKqFuWyh1_PwU_HJ<93-tI~&^Wev^ld-|-X#UHf`-@N~M zv_{X<97I)AJ`8PlD;-KB**#dBF`|(oop=c>HIh>_UX=M4#1Zn^HZ! z=*fO8yOO(;NpSb2rb1y4m$$o}`We~YW5@=$S)gr*RVFpe|CL1XKGUCD9nbV0?TI?b zl0>Nak?S4?2Gzhrcrx=Gf2U9LxVN3AgpJj!>2};klgvw3c0VJeP8*e~gH(;W?rdPL z>wC8Q;l8C!zk0_fv%=`wWaIMR|E+c6r;(a{2IoP2nR|^*dgou)0Zj}5g)ZVuutRcdvovIi_N}BM%1lD1Jl|Wzu_j5 zIDh^dO!D7{QZ7AwRWmVTo+_JhzK&jHvHeo|VvSGIuP|~_>!Z`@3vq*07ewQ+Q|!;` zsrT8Kqm2g0KDQ^Vdy;P>DePc0yB(kT^?8%eYwYBN#vkc6r!CFV4L++)(Cs8uVw{P2 z_u9MNX+9L;KIvo$-6eAU0Y`mi#mv;huvP zd4jk2V)&WdC2@zd8#0#uUmIVolC<05O;5DKU?iGD<-n7T%B^FnFvEq24ZBD^wZ^2a0X*A34~AL3ROyOT5NRuOu$5=p#`$CmML>dQn-gQ4-}x*xT% zPpX%B*TTN#dzvG4@ap(P#q7Q;?TY8f#q)yo`^3}wWW(SiP+!+Lbj2!z`(zKBhmPm_ zy;(5X{gZ4k`AbpO*k=7TiwD)g$;+aiRa^D>A9uk;6M5;w|FPCyEn`JSJ}fBoK)Ru- z)pqK>^wco)EO|7mO+U0S3?|3E(m*7j`^|nR8i+p}Z*KMVNj}o<-iG&h-7DtP$^r}K zSlBa%NXmQFd!Nsbj@v^dniuh9TCeM$L!&*H(E>W(7#HPsd`zpOP~FD zUh`Qig8KJziK$;r)n51CXL$6*JO8sVvf8}eZcdTeXg&7+^br~7Yq3YMYM#uLI#Y`^-C% z=%{{2AEGArxZpJryFJ`#jX}GGqGZ3^yuOF>`$Qq^C)j}q=ZoN&rOI3LQQ5qQv3At~ zJW&?YcsqSMh$qD7g!45P-R&@!TlmP+)uZz>$``xg_mVE;Yp|R<6J|bvy)4~!v1s$| z17Eqxh5Q~nfi5t@d3i5rVeVNpleCc!v$s}5zR4}F`y4K$3CO=En=LeROY7Zgbz6am z&pL;+vf4yDoTH>Y?e9n>{+^kV_+*ZKVY`tz?3dWBGh(2l9mS>H(gJ4e9A2;Uj$a3VT|=Lfs)sz( zZ784JpfW^sgqPm)Y#3v)CfvO!+Bog;XYtO{jhe+Y?fA++U7>%-XI`y{ojhGC71qfX!90iH!9fH(=3&48_KKK$T?u1>YUrL>hKTCk_~k@o3z0N>Ok3p(X_EncwufDi_hA*OWYg| zqvOyG=}b1RQJ8`99(3xApOmaaDSWQrGNTUcP0c0MwbnhJW+aGRbeG}Prl&9Jr?U@~ zIuK@p8zZabRAIZR7F;-zt-*I=;i5=#A}6(GR)I`T{jZ{nwz`IwroUc4`_B%M#FLL3 zxHr|pj-8nGw4H40hXWF4KabOzVb1wvw)WfUwAOrnioQ-=xK-ojrt@i6_2K@_soI>j zM4-?gYbH`}tl5E!Z{9U&GuO;O&8Az`M(+DE^5V4C|5NQ@_*sT=onc_e8?u)FwC-J6 zY2drH`%YO-9o3A0y7=c#$%}=~?DD%S=r5BkP=RwGw zw(Ye>`kvR9Cgh!lVZyTAp{@uZTy?N z8&-KZ=%%eKJ*1rn_u0l7`!7|t=$Te~v1N+YkmS_q9+p)uVsKfzJZ+KHsE7X^tAXXQ zhd8O_E`O@Mts~OS>exfFV&s$H>?S0$gkicJT5Cw_GKz@qAB z8_kD5WLZ|cWjxm2lfnwzJgPoNH<17IVq~c-Fqt$fN-OGw7q;?>k+ibI#SnZOeX;I+ zV9b3gVpdv}&ohI&H8-&!bA)5|$jl=!v>L2&ucdP zq%RBNyXEUhoxfF&cn_X=Sf5pIGeX;$BFFY>-;(!A{a1XV>*`=GU!K;A!{f1V_utEv zsKt?8hc24$R@%|cM5LR7(E(|kt(Z4^>6qM3bTdgL|)ZnGPS@=sldwWkl&DkPJas5{;;t+57p)8;qvd=M>#V^;wWnsD2n}00UYk{SpZs~;d|rLxu+D+27)Z-;t>ho2Sx5GEOLpzYmSU0q2`@^>E%K_)(}Sw7q1V}EQ~89iNYzu!Z% zexiNEN#q-cPrFC-C_*42w|Z;c&Kk5vXW8j7|IRp(EI+>Y(9C4tChHwp;5IuoDSHSK zgEdc+uU@T)Fs#IGWt*+DPaAkN8VT$!9`hc)>ORmXtc!x>XLN=lh9(;JyuMG>{LD1c zgamw6Jw=M{TfO5b$6=(^ewJ6W4%i{jND(+!E5LK!_rt=Z8*$$HvYL28dLkj5WBaNw zGF~7*F5?*C?Z$Wh9gW!#YbK8UF*8UH$$U%zdpGXzKzaG1({^U0VnZF(*v<*jH$NP-M-rwoll^Kn ztyN|=fg(@wxV5hl6furashU#yg47yW+U@u2OZtw5Iu>@fep(jJX;A}uKIDN&wCnnP zYG~t;prFz4tUq($<$P3fj30=Ga!j6`in+C>a(WR>+9$-b~!MdeoyrrW*QbhcIFxvg6z zmor5F4Kn_iQ!1+#>wahIyt$Xd-P^qAD$~7E^4;vGG8s@5eEB4(*^*2=4tw+_y!s0>UmPcj% zIXAoS<%^oV2%ZQV{+jm4qgZw72S(2I*_X5WE;=W?G2ceQke}>Uk;{D>DtGHREXt;@ zK8&bL{*73-MZcTg_KHn9s4Yl=|5IBS*_aaPgHBw6Nav?bFr-DiSC68_98Gg(j z%bKnuq%F3UorXbssZwBi2wmsYQBIbyq~?T*xdg@?ENgDEfA18S2F4l7XDOf8{O9({X}>94qBGTS{MB{8 zx)1b)PF@x*lOnRRJ?n;fQ1gu^M^?$J4hQyWfkeVtC9_-I7ER<^BfYDyXV)6W+Z(wp zJ9lPu-Kf<>e_s`@-qcKJn$a%Z%F2vw>?byx49Zw~4F}_$|NUG2H2!Nt@V@?Dnt@az z4S3b6i^mr0>i92e#?I|uE*J}c#=`OD*3H(7p4K@BitaUMcqct^U2rrKs>f2D<848& zF#KB5?bX3Pg|p9!XO4<%uWLsAk_r5!b!=H@6xJO`JBby`g$<*2XQln_#d{KwU~=2* zn$inv)8AApu;o-0tT}Mf9jCWt2s4LKi-tfgXnXX@+CrRfY3u z;iPXTf|0=S`e+`v`J2JeecF%S?>>rgQqg-4;z9!#i6d?nn`R__zda%5Le}C$RkY%x z>XODH?^<*7V2N1Q+}mNckw%Gh#7>5@j>FAt0vAf+L#SC=$B7KW>!b?{kTo**4;U*j zN86i;Agw)gG2;a0_nHCDMl<`ioRww;t3Oc5I1;04&;P35>wUd5hIWr^%RBYPhQIaI z`hg+eVJx=UXtVC)vR0^ym#;M$sBS&l==berrQ4gSm@`6r4IW1PEfJ2PkZ#Yusy(5# z*iZR4^>B@qhUVRiKqaC#w9@S?4>%Lc+<$vszhghy_p|yh&EUqY6*6*?wHHrI3~Bbi zE75s{e0%lP$=QG*|zSFaFT4b z$QsU>M?8~P(opSCeOKw*jralhmmM*2jfR1F+1XGI2`VCBzXk)*4k|t0ZPcl9Y30)H z>t0c(j99F-{r4S<&e^6^#qD8Gn`o09EpNzwMFC&jn$7x#2&suP_r0YTwmxl14z1J~ z{UD3tM0fP!#nMOGud44SC9OrdRCcD`ZJkfxU{36xB|P(pWX|JA#3-e@Q=~BJ*S1%JaPAdB5;}Sjf>W&pJXjbk>^;3#F?!@yh?1e@xrFoF`qaqPy+`rV3! zXlT2WSd%*&zyDCvOezK9tAa=j>1p-nW{#CUN6(u#&uW!L(ax#T(EGEJgD7WgH7j5z z!97n6CKDyWReaUKWcS8;r>$kNZ#G;co2~zb?h_I@&&JahTfp%{i4F7F`&Re5w&gz5 z-%wW@rLnzw%&yGP?|xkJ#;rIb5xO6z4D(h%qPZg#`jiDs@`%m-aK5nwtW)mb^+E4x z`?khSj72Xn>ff1NpsqIju_XP3Pgkr&8;#5+EpE3T7w4RoR&*QscV?;AuE*@E*&S*KxR?A+l zy+m)wBGNtfkCa-gBD$ZOZ4{iHSl&9*^kTKDy~Lr1_xr4en2$)>RgE*Nh}7d9B<899 zZ{>!x|9ivI#Lq|te4MqB_-5s0W3pG|W9}h{3;~@Qu-p)4t}~1DW;a-wVn}rP(IW5q zjELGUyH3|+=Mpm;$=Hzi&AQ$#<3xT%X5tps#LOZR$N1iR5Z4pucvmZ1bBKMm#4fz5 z72`Ob`m)-iWxJK;--FQ)@#NEE@-)y}6 zN6{r4;+tFFomP)LYpb$aGWn!NKb%`fKhQ`vmS z^+J)!noTsI;U?BVm-wsNWmcY9$-|J~=z8Cl^OMF9;1zr6gN7jQ+yHe{J+e?(8A{Di00~IY;=j-F?wN(&q#ryLHSch2T~+$sbXQT%^5`*khJ28*!Jo%KE2hmY<=H` zHMXD%5VK2mnsyY?#{aNSGMe?wGSH~_>DFq+t4}ihC9g!fMl$aEVDBUjxZ*qglc#v- zx6N{WTq|B@9O<9>s8oI@0;R;<(=eUZI$!#%E=*{0Q7eS8kq zh)TQIBYUXGGtw#14b|v2n#{Gx6PZHd3l8#ok;PF z;9L%rY-|+uw#I3#Kdm`ei6fj$B=*)UQrahkEY zRyes0G)xwvgtnvx#vZe>X;wM^$$1Y@7hueUj@ zGt4NmxwJV;eSC7gMWV{upu2YmxJ=vUH3NJ1ZlhRrQ7cacMy%s)LCh;|)Ax0)BGoDO z?2zsv198c9&A=T1ga5SA5~81Cu&XrFf8<^w7v{LZ}Bgi&8xF~m%&v- z#a<;H`!#FUX6r2#0O^f&6^ORb+L{CtdHvl+x%cb#n^|ghY3o7U@^V|;k^ z-hb9kCt@^KpPnKy9&Bq8-?-jkIPI!lUe%~=zt5M($Y}svF*$t@;dPcFuPN4uRXcq@ zGP2>si};o3hI|_t(-1g??czOF^e~tU*Ta`J9L^$b530>QU-#=@k>B|?e0@}Y(@lN* zMUB31gUPHw|E$?~>3cYLSaaBZKHvH$EgROT%I<<01}SQ$MZYIo~D+%yt+`M@evbT_eL)tgAOm?`apG5Hs{% zu{`VaAC59B5e@j-xA9TZYQI43A;>{A!Qy&R^nAMynESlE$93dz)^+tMYSfyCO*H)n zMw@l>6ZdWW8MOj>ksEqfeZiDC$x6B5L{`1Olk1Hi3WubC-rm+MS1#tKYF8(L>e+lf zi#`p(mP`iIJQ96aEvAOEk0@Q#TU37E4-CULTAyr(nzl%Z^ZJ@hmp{+@Ow&UofY=H; zv`U;X7ClSUI#3yW$t&%@&iPz6_)5$DCH(NpXBWGL9hjVgm`TpPjP!4)*x{)K*^dl^ zbV588@@f4(HUW7gV{~Vuw&@|Q?qFy?ioGivv4=^#HxZ|ib?jz>%+pNxbVI`{loI)EYMk2gX6sNGch1-Ew^QR#X;jKqbL?54`ii`wydsd zjqWIxPg(Jn_M7cXmcUo&XxK*ie3Nuyaw+VCyijM`T{)AMbfLHGXdzdx&QNpLdS ztv#@HaSO_hhn|I&j0e=Lb0Z!@Qp z?Q+_0YJ_CJ(Ubo7eMg(3N>Z6DIo!kagObeDTHMb*y|iYh@$i%=hN`bUM5;ICQdM!T zFO->WdPxjh6e^kamEHn@-gvmq5U}#s+mZAWO>V`cqZ9Yhmou9{q{c1#yl=Z#qvOzM zn`w=HcFGD3@riG@_3cyq=Y6X^jAp*G?YEf7UmJg}{z9KUivMM$sSio5L-*OIfoO3u zQFLY1CfzPxceVZTZt}>RZok;DNgLui=hz>9n0KE6IDH4r?>M0{M9Yk z$b0*eTl-;oa6UFE5%$`e`2rzpg*qj~;G?W_e#}&JR<#~Gq2d5VljZ;M??9P4^Q5LmK=$;qnZRMeCermYCt^3%u zESJOH0;kqgv~V){W|B5J^H7ZQG-kzKoJb2l%vk6~%zBN3b{m++s_c$&VM^BUqGo4*$ce;b24{ghsd=mHwg%?`*1poU99)GG%DRo%8piSh%c)})NcPJDc^SFRN26NIBvbS z^Ug*koFTAJ*hv(QY z`yS*&R4bvp!$?S<4Vs9n+*xwcc4c}BFaKDYln*)fSoe_Jk2?ld3hh=hWVPb@^bh{d zy%q1uo_W5E7b$=n$X|Tyn9@atNYeIJKqw7 zZ7OoTVj^vB!uYwgtJ`3IsWq=Ni$q`#@oU5wW?pIY&ZN_)ZU^g%6yv5<7B7*hqr!Li znv}#n`<~v`zJFPfxTDgjtWGulZx^V@AJ#B=sJ_XprkAwCQSP_BvtfJuFnB{{m$eQu zG+IuMYhsdpCg`}vK6#%VvYHtsa*Bs!^!3F+aP4onH_v{v=vg)|YsEaA+dVlK`$ti| z6LD*fv(FU8f=>pXt<5HxQ^3ZIv~#=0X~~V5X?~AaVT3&A=gKUsx!C@m#qVthahaST zepIJ2_+8#BoL(d6RB>3@{`V;N)xq8d{?}Tczj=jVm0W3OE1VYflkWC6xtD$K?kR!w zNRWLiJ46(D&63SYB6RBP-FPb9mS`Ax{aab{G!zV@+8%+`fO3pZ+t7hiAw)B^l84kox=^I&~e zkA*dBcXmyW(@SKYd!Tct?^JNx-L&RxMBec6Jz9o=M5yiON<$0`?Rb62pZPk{jrad!%@SSh+fGX_Mw9rrZ>K=3 zGmAbW@t}V9uB5X6-l=sBH#LNJ($S>4A2zbvdC+=~+Heo64-)V98u9M-bIwPMWNygo znz_4=Nd$S$wUR~z%8sAcx~?~ib;d~x%4Qek-+il0zgaj{8SS};IIl0ASD%VlR$1ia zX?^F!3yx|ZV9ozD+;Mpm9hs1K8!8(J^!L2hkhQW>53!aJX^PYY*w5ko?&qSuN~DK` zNgUU|H03wGg| z)gHa$R=BaN8rBY@6?{g@+#Xj&OZ?7%70m2Zbjtl|vma=9t#9o9JD2Ka)cH2@*|=tz z=+xuV82Ph@`}ZbU`El;I+_$n9FUo?sTmQ}bRo~u%p$*x}soWmxvCpu?w|iH#oIJ;j z5$Wx|*PK#?Cu`e7@JoH0s3ghj|MpN`2zGbA|E8xEqmj0cYb7K*Z3DMrc8`~y0wt^X zag8>$x$#@@rTPhxjNDiHTfvRT$_fM{?jTB=SS|@Qr=Ii_Nr}eL+S}@3&6IUJiT^{< zk2`Thm1n*A-Z@_{jDK4rvJUd|Kt)d4H}?M;lkQU_CmRm%CHv~Dl79Vlp8+|lwU9HY z=%?C2_TC=ma)S`%AKSIRCu?FQd|zL~`OCsOSv!*WpS1_UEIaqt13u}tru3gmp73K2 ztBCqEhg<^LXheSd$moV3=lOGN+K*~AvzEvYzT(sOmgYLcw6YwM-I5(bgD7OQb&q1t zMA~ql4D0yx4WUwoRZNmxR}YhY?h_T{JD((X8?8~JhPb=olLmDY-ALeW&us*;J>uc; z?`Fl3F?KKUqwKPH8hctyU~+_gV&ZMBnyvD<)+J`d(wrV6d9;&!Z%enq(fHln%Tevn zT94#j_pfjDV|}7p@F-)jQde8D!7(g8Eh?w^)Xc%w`0IVr0d+Vt@KNz@Zie}&elt?L z;ly=GPjqCSe-w|eHd(`+7snjc?$YY({za;xay4ZC+3jv5jQH4L{m5W35M-Xc^{d%@P-dB@j<*AQOC%nh?E{X~kTx+Wv^%@*rk28#A#ldlqt zS8jZs;s2Fw#Wp^ve`o$Zf;*UhsUB9kOdD$o{^5}gIp0S5iIU5AiOsSrR_p{q6dhs_pKE-5(3TPl|?rDr)|@ z=(YC~Y;*@rMi$7gk%w{|b_d31C;Zd_Dpote^E=*>Oj&r zJjUUHX$z&1zhl8oYwFYJJ!8G7^{{{1dIcBFlNW4{>MrQ->Njm6O}h$)&Kn$WKZ|S4 z%F_#M+t(L0N=qz#L=!|e%3`m(m9~@m?RkBvs)to7R&urUA1IO&H}KVYfir&Owdjh` zWn|Vd()vSv$K&G}(Zc($zkbi}v<~k@)@h~S$ldd5rMvi#(?i-~ZSy8XekWoF2Z11Q zZMA;XDIFzOn5if7TsOJ1vHyNg;Eg<0lSb zCV{(G8VpW(B9Vl%>Of4iQlEUR)uYx^ByKDw(UX?BC~|rWR6Gh8WChE7?jhXe)z-P* zBT?m4t;T5nPPNa#@DxZE{1mTg`i}IwtQpaVD5{D$CJ3?t~>ET{|%ik39X>C5OIs5ZVwTxEL8p#l?MB`hxNZpJdi0Ck8rLDuK#rwJG zh0NQxi}#5-iEHyx*ZoKj@kOGo=j(7hIzh*OZJeG6#U4h5wwtEcp7V9$qcAG&IIlk2 ziO2xaOmxpHR3E{{?kCXW1FI?w(Cf@20odMpc~!HTIi<~6icqPn%}9nm zcS35=*{LcaVWvLQeA~u}jQ_o62z#0BSeFgQnzB#02nEk<($8gmt2zt+`#UnPdmtl{ zm>on=@k;p2(4yiz=tt*c#5uJZoU$6U=7Mw??h(G!>QhiRMcsb;4+0$3`-+jFr zyhN(VB|I&vnTqXc`?}`GPIC7do_k*3th0<1XbtxH1{1uBJg++yNZg=0)_SLI$#`jJ zjq|Hl{s`A!RSTIb8-BYL<>=WCzo~yoNA}9>UHCcK9x+v`L9sHIu_;!X40K{MWav-< z`WwD?|DK3}74h%d^W((@P9>+e$Hp2Hwb#SZCZF$Zv_uBQs_hv!6qmZjoHllO_gYCUqEq8ak?4=eUL z--mCan^0S#d>IGT4QF&^{dLWsk86*NyUsMdp$GftjN3SN{orzU&l<_RO+a#7D=-vr&WeOyV@QO?SgF2YRz;zS{6ynJLDv(FZQ!RTR3z7 z`@|s8ojI(UtNXuO{ehy3_Ft1~zKj)Mb~5b)6}j+B%^x43U+dVn%X+)3@}e*xOEC4t zXd->s8J21MBs7wHEm!IYB>O_u21`&}eeCS+OFhr4n&;T4-9k3m5$kaVts{))5xJ6_ zkQP20Jvw*oD?ZAwU(KYbSx<9DzSKp!AZfd@A({RJCz#n2*J)f>{Ki*nVtEk7! zex;p;#gFl?$?{e2Gz7|q9kQtPC=YgxdvwKnB6uhS^^fP&?br1ktHrHM*3y*&?7qQQ zL&xrYUVH0L|KF@Oa#!}8jlgR|-&55hEh-iSx6fF zzENUVxzPu!$J&s;ZjfSBP8;9u3D$yvu`~Kxv9-iO9@ki7y>|O)&E%+lpFBG&sk5T9 zp3GO|C1(ztWLG0GT-Lp*{3dbPp7>df(~6n&)KH1JlCihfbY9>6R&$X_o|#0;9Mu>k zT2}pI&1PgPZiC(U+p&OuFR6hhVQ~5i94$iDvBqdSKaW&bf2KFtjO1eM0g1a}Ixtz) z?>j#09#9&)LrlTH>r5iu-qx3oOF|}-PG|kI&2Hl>h8+-ZRA7|qDbpJ+eVI-#)Y{fYHZo=(Q<6*z;(IKfKy9eG)>86{E@|9I8!v}Va7!o_#WTOqM#C6RRA{c!KoQNgQu z-M8z@U4p#+X^VvGHzvf^NqbUvteZYzaa!w*CI4-$i>>thR!=y96pcO&G+S^g6UeQM zN+R6;1DkU;Ml?54&YWJ<&uhk~+wjsKB|mX8T40~`8bu>QX|yS;QJ(hGTkX~^&n~A= zqrbWZVFs$0(X+~z86ma=ijeR8pZf1eV9^5Or(Q({`dzJW_MqFv5$1eya5hxgP@M@S z7uGQ%&%`p4VQ2Z!ZY)qz^TjgTz>+ck#uK$-G0a(0pvX157+PQDFK@-V&g)A&j3QED zu=)lK<(+^pi+}C+ehlw|()s$;KmF^DCSvs`8873k$ z{k04OLw-%QHmXbOuQjvIIIX+U{pU+_Lie&*q$L`haU#un-r@xDft@GixxV-I$V^$=6v3aA1IuZ z*e#DP5xIl9$s8v- zMq>6k3(*=@4>~w2832}@sU~TiVdU?Z8>Ub_YdSaLcJ(R;`(y--Xl{0dmnH|77~#wz^62wwRYS!lJE{M| zpY`nFeyH9^Pt-fIxyKX3P3(NF`w+pwi)KkSJ+6OwYjph@muk4&If2Gd{LCP|+^;pc z9mSe>{NLV!fE9ci&vyU4R+>LLNeoS`@#+Jh8S_OYbOb4a>UpcvTVS5lZ}V>S;Y!jP z%RUh?*fi^rfPD%h@2}vu+*&@?enXh$)5066oO2)K-x@b-NHt8Cr61f__h`{f-Trp7 z26(RY{%XlJgiMnR)Ac4T{C3tHnR~A|;_kL{t5@3RF6i62A%n#Eti~K`xZy5p|5>do zM!Jo?_gnG2O6B}Cnz&)Yzp6t>xv^=xJyMqpq!C3xdL0dMQ`p2cYBAVnp-jBGhfEew z%m!74hem66e|ER4Psrr8BB@WDv}Sky!`~Sx(x2Rp-%Zl3d7bXzsM^sb3Re*+qct+6 zq2dR*#dED>>sBvT#dh&d{Ap1-Yi4+@;dl&ofal^=-hQ?>wbwtDjd}HWGG%>(~|S7hd+zrXKv9otX8|rFB^{Pp7bGx z!@Fkz78Cf7tdHobPfq3x)M84ZPMxTb=q@Ri;5r|Lng(S zSgE}s#WGRzx=U$eW09<)3d5~xzs$iNx(iUQPqzG!rW(ddqeJFyN_!bS3Q}h7(Pb~{8 z=-pz~G=%-avAEn^#R}Fv=zcnq0$v7bRun0Y()c-IZSv-a7>Z0x4B~lV2_|7^dI>~) zoL_4_YlNcDaLB(oIdxw9D;AiWs=JSdLjQ@QUDrHkuloc?WQWacalOMNz+5ThkyawwG#LrZrTB zQ|-gbgI!;Lzvd|N6OAvEIA3RvuQv*yfk$GZh&^2B+iQ%lJKjdu+T$YlUn6PYP_&&# zv*9*#A!9}_iQRzvp?;gVY-*XuC*hIAYdNl-NO|@tt7y$TgNn>dg%OD%hBZuy1unsWF)uJJr0 zKddkHD{eC1hE8~Vu_Qm*_G#bFYU80qe!Sc~M3IDn3q_%QdzEuiE!oW>63X0U7M##= zf*wb;92+PS-W!j3jp3#+*IElqs4rF>`TKU6MW{x>#6El)u?zNx` zG!-k!w{iijPSJQ3fl zF``K(Iyi9G1?TT@wzg1;(=%pAQo21G$FDdEy_n^jnomb{P*(d-`U+I4&G;X!F+_@6 zP7fSUtfLn8)oYY1hfkF#`K+FQYQ6Om>bkCR%!1~6R_pt!c5HT`^%8%a?`M_SF*2p$ zSi5M4=fTn$9_U)ccqe3CUP9^mOfi8_6fMCN(;)=IqJ-+t`1R^{iRG#c-|q7`=!J{7^hTcPN-u+UzeW4Zo?(S*3kL<>d=A zxvZJBg`=0yz{Bc+)pE7*_Z;G&%1(#dCSJofm(nX4003C`@)dk#o|8-Nkk# z-MZQhT=tzLhZ`7-cJC-4nBHC4_*9L)tI@w1C?%TKTqBr80uJ!B`23u}2t$-Rm4h9j}2iigf*@ABvU^r#?5 zGIrffqJMbYDw=A#^>~{>=b&&*IMhkNWC`Yr?1nL36^_u#v}FgvHSAlIu~J9h8c8m= z`zY2;d-BE&cX?%$wJ&zcLh7Doq;MDtH5%#1yC16QI}YuQdw~6yex4q(6JOQ0uqHkr z8iRTUCi`Fpd_JDi@KV<+;Q#;B@5koo7V-~`u<*%K95FE+5w~DDu>fn0CKzh$yuGYX zc*VUN9l_Vb$T~a1l7!PUC8x5{j1DD!uRdo}+0GA!49cZOB(>Sg0C(kb*o#+P&o_VB?jK#9x59loxu;dJylg-~P;{+yj{jR8NokQqIjK@vS>nR@VNNcd28?x3}r8Rds zd$nJijg8>K?-0zSy{I-*R1j+HLmS zzOA!r^b6aB9m-l5xJdt4miP+ip`o$FI*W{N%o2x2S9r_tRjqe;th34SqUc%DpI#h` zpmViqvq(~r0x)EP6BvFwwnt}3^}!aWS9|uIg+%@MgtvuV{2&)Y2e3@NGYvd@MyULb^$sJ-Z3nQx*?~EG$gOOAblO3zC&`|SAuYK^Y zNbHi?-OhZmMq`tbC39D?*+)`!j2jl65FDM(LS$JuJNLSDkPIJMMP-e@hM^gAhF5(K zZ|6~A^I^p+_K=^{Y`@<2ocyKrS>5OL@2cZi9mcjk*#J-|z#68Dk0oAtJ)VXuoC?OU3v_3>$O=J8sEQj7++Lhtc$tP(L5t9;;lTX9#D^)fMg|| zyIXmeoas5yc|VuuqB^i=)v@umB}6R9|3uH^Y{%klSa%n*x7Zzgmf7=;a?^o482M1q z(!o(f&^WMU=MR0*j&f_Wy6?+RfMu1mGwaYLyG3kasHMM-ETePHaO0 ze=5!4H|_S=x1{pewH?hq-)4?>KdP@M^XB`e6uQtn_)=(_AG=~A^q{KQogeZ`blJ!V zo}9gtkzfhHRk)d)>h*LqI(91Aj(#5(d`@hP?b(pwI68rz&N}hW-dsfx0lgWs5k#VGYys_tcb+c6YGCNMPqTqWqTb`FV2wkhje&!usx3(XvT}{}& zjV+ieF7MvTbPYsySX6`EHnDc|%KpYuXg>koL=LBi?6mP&0_vlN!#ZYtx4xp=V6t@z zdolZmr})qBY7X@8eBTfc>bK-JO8ol6*xf2(?jFX|l2NB0yvymoE7*7#>*_oHEsm_J zhSw;L+H33fuILi2Wb@4qH3SL!Nl9uR_sHsQRr`R3+0FKG`VaM-)U1wcPd~18JTA}T z<4wwSl*~FpA+ecr$8YEGruDq~wgV>xo!y&pLPzccd|K`CVd7N|Ep!b2w0O189|^6Th|FYJ5qRiC%&V)kTZaCv1^fNm`vh!f~>_ z(Z_V)ij%;7x7n{e%t-EiKZ$y!K2grU?eCcf?cB2BMa^yW5-j6RF>rJ#qGi==f_2q_ zLgQ=?T5d9S#!0)H5_KeUQ0)d%sw}?#s?SPIVO~tXaC<~rLy_tQ?E@>Cmo-wavoOOKDF0R2S0noxCY1?%5*%P> zX0D+muacRGvsk#O+dGFdH>j|mPHG;!?7>@Sa@4S>Py3=)n+)d4hn>&)Zkq*dBf^tt z<-29fPzm2AaiV!^SnMGC&pPv07Sp=c?|TpRpDHvtRl2>S!urWB*_VIRivL+$vG$SO z>DbwC8|HA>M5^_XT@tO5i?we<2YoVaZp0B`6?G@6=3J9#Ms)CTtta(;$F<+2$cnwr z7ThoGdRgO$T=~;`)tQ3x8Uy8iUvb`PYtEzPL;q^HrzYJjf?1V@bmV_(Z~m;YR_nOW z1F0#G28kqfo`l@B=QC#Z;kUvpc{#ri=Dh)PUf;Pl1*NtxZzh32tE?fJ0G8Fhht_oL z*2xX{KD&2W^NIeu+_;&IJX)cla1j2Z8P?gSkE?2Jo$9sZk!I`nk#=m2nPX@JZN^8Z zaYl=F{(?1Y?8jRx>tx>pIV2KJYSa1SV|E`ySMb~(@7hzi9BqA8{kX%8tcX3y7IBYh zk2~3rykr?IHWIe;9PVnnEKWbFRbOl}!TGM~CHmrGo4C#KmmA*nz ztnJt_X1wxwX9A82d-}IaGkRzlK4mL%4%1!?M5yzuwEe>x1LxgtrJ>B8t|7%Is)rIn zrPhaAWpbRd#($%)`0MnhtQ2iP3cab{`7?6~t;piD-mL}nFSYuC$sUTzS}Dy*Z;uS- z#~X>xxL0##apNsiIW_@HFHlD%A9B~;P%TZW^`ypUU6K@&zaeeXZl!R-nxB(y(@q+E zRS@2dBr#>2o&4)t?LkH&1#9SkG7nm_f2uwbSHYcw)s7*<1P<@lA>@Kai#C*4V>EeV zvs;|fB#qUVin5ZLdl+L_tvS-b!wC~<7T5Q_v>O`TzThpTvw|F7x?yR%*UK284!)nN zdlGNP4^>#X_c%ld*PZHC)fb5tuC1XK-=ZbFKK-UGITAhq%EyIr9k2nP4c$>@eyyDV zC;qi>KPnuN)Ts$s+e2^UxcjBV6NmCUa_rS~v3}?7SVq%(s3b8qw>l=HBik^P-&NDb z;HkuK!6SznRE7d|(^B}l|DDm&j)OxnVj9k3#9Q0Lu?p;4>TcOGdkef{#ws)H?&z0p zxvmvIsnNt}rvJz$b!?H2tDf#E?yFh>ZE(0-p{KKLZRi>G%9KvcSx!a6!`C${InVXn zjMmVHlTq#x$vps%i=W#YMiY@WD2D8F%8_-H6->L)b8afH5=?ujLZpU#=B-A0u6+bX zZMT(>1R{xcHQB3uZ*RAI<e_nIzpHhL)d#%4f#%7J|qzPJ+4@B-x;9oWePTO}IE!eTK z$fi}yLj)y}smT4AX{f>;u@zuDmaPA_-KDSALwt3#XXP{&I+{G{K+>=7$7cVE-j63c zF!62JYAXk5Z#t6&3+E2bCgLm>^|=k^sH&a?{pl1$(^By7O8fv+ur^tMF&IpTu>!O8t z4c=Fsmk{+42$J!S;sid-%pq;;Cpi+9T6lZ3^z=aD(05L*uob44P?U50YHjpmzsJJT zM|75$t!g~k;l!P$m!>8hi5k$(v}X6!d5|c1v1iWP86gw^%g$K-wS1c$=e3aQYEZqc zMS$T^HEO2Krk~(a z4o;Ph-M~|mKhRHbnf0V%K9WluW@2j~8>e(OuVKbX%XQhp`Z1e*+fmJnobzVuP+Z4U zuQ%(RtaI`pd_OeNP_JtrQUx@T1oO&X1xxsR9X)OKK;@AU#06(|X>a|9notB>?P1)B z;?^Fyxyel!zhyw;X*3!PPi|yjoT&HqiOd@;`#a;LAC_8fAm_Wa54qwjI)qR4x>n_; z3XzHFC+#H7^V;o+BAG|%?(-TWw1PKBKXsh)a>F8@k8UBA*ax(;KRr@MEK`NkxAW6w zP89B;5=U+MMScuK=v4j^rFQhhn0pv>1S^@D+mA?*uH|8WrZ2umY}3xnx8E@^UQmsd zzylUB#UCRlx-WUG`2FKO=%qO)`yTy^ciR^nn1?lv^CWZA#k7efksWLrGI8vZ9>I-# zGzj0dy{N%Uc#oBcUJms_*TbJzi_GYP7UJ zsMV2jc=%u>`KG`i8!Z$otnNk+k^c#w|DzZWE9W$g=(uz`@_Qg%;ZKQEm(H|A8n8rvF z{~yaEeh96(&M~d*vEve?e1nuOW0GaR?wGvk6)E1g+_P{Actz^pU`rRts z8pd9dvWfmTE;^zt-(yzs(#G?~V{H$mqC@P$y#)SmdTDD1Of&IeYcF>MQ$B#E^Ch3Rvv7;mfS(41hj21o$MjsbGtZQhlBh$$-!sna9BW@f{ z>$oyW!@g&`4gGX$UNG#l`_Aws{*$cU%qM#pt*sJTe<*4ovWu$d(VTm&_HC&O(6iXa za5U;eaSzJ2XAiSMJ1RnF#_E1pZSnALHmr^1&=B_DJ#-}DVeL?&NybQ?N)#b78fGIS zdbS<0z1(`kTOZZ@rZxMgpXAEaU8}u8g`=;!-ubL%BT|%D-B=DzgP0F*19zHrazisx zIIVM@VlLBG;s_Y0ZD+cG%=q&G{orbt62s4r6j19G4Sxbl0@&Zn4w2K;R^l|sY_cQ`qjVx2s zGHdEStVkr1ew@}&mKTTH%GkHTzZIjnryK5v;yT8BzxvE=9QIo5YP4BLnr{lmI$7YX z2eIB2x3L+#S*XV4yK1#QeU0DLef?0{*UO^l@2Y+}tDnAIR+YZk&U|HaQn6#V(EUmg zZ9TyuTaZUL{|+t!r;Y)gk)el{R?ke!+{(j3Ua^&4#Kg&M^Kplbyyn>N-4l(ZH<2@M z`0nS@@fx)-bkKO>9ecmOea$Ay{q?d9(@SK5h{A7$NwPp)m&o5bmq4Lqx)KMhw3XIK z0~+v<%F_z(_~TW58}D;J2eDh#N9@YgmhW|-+sN3t=Tw|9{j*m3JUtnqrx_vgOzhVU zn}^@0O=Lwi3g0sCvhBZKH6E)F6_F5oIC%m(Dp7jA^T^)LPO$Rhm$1nKKlV#Qx#bql z6SoUqX0*s)J_U=_eMyO8?IEHo@?T!>Y60~~Y)dCSGOwx2gWt$+z91XOti?L6wl(^B z#tS5RhC?&YPYod!N!F9jEO1=SR$60;4RibMvDHf!o6*xz?I)=e+f6>r&%*2u?0aD2{_p!6Bs+4E??VHL zWxF>+6k)y&r?PP7of49RM>w@1=_#-$wOUmJu}an!JQ(}NtpV)USi6A%75=V z0c{=UC%@SvBJ95x)kOCOB0EkV$tArj`iafAw(|CIwa8=ZwXBXs7 z@FO2zy}v(Q>l3(eY;MXiQ$8rWPt+sPq7_ag(C@o0C2iqpo}#wgnCR@G93yJ)y+N1Z zJbLG8aoW$7&$2gs7V(2v9qBc@OtMEuepX{gORnvS6cZ?bk#R~${!+gt%^KqYbU)# z%i|$Bhb%)O?7CS~U|3XdHd#($_$z8Rlq1$@&t=kcPKsn}9kh-na$tR(9gbcJL}-Du zBE{Hl(ei1{PTJ-8PAtzpB@u}140-3aE9WTY`;Pp(Z`4=#qdh!d<2@@7QKRj6zR|U9 z{{^b$9=j^uhYGPkHr6`w|Db-)ChqE*X%C0|U(JMf>&_(B)xKRd%uhwv*~b?(Lw`mm zblxByFWqPr`(E~^%;`#Z8xLG~2xUI4x$yPe9I^6gN8)*`;s0pc*F|BYR~m}8hDAMD z-F~EG0oVqt%8m>Lzu9H9%C7L=Rg!g-U3Mu^6ssOO>~<1aRswc!x3Yzu<6t+>+?ub^ zy78T;gyB6zWC?!ML+p{vJw1r^sykq5h{ugK=p4XzRlRh!?bXPYZsRBM_Y#F)>ANA~ zb=e~l&1t8}M3@J=0VV5$=BAr^4c*3LLH_Y596&QQ?~A1BpjdS^XetlJkvv3$*#7Ylj|FZNH=FF#1-+z zv^59PO(;4PIJRZS!4u7Mx2F@}i39`(p}k)>4ND%O4R*V@UXKGZl!4R3!5~#HvF>I@ z4XG!&U{SuV2hi5-WCr~)Gwl{}B^C=ieC+6sWM6K*(QrJv+?uuOldhCDdpLQ%QFEdT z89#f@x_wuB{-SU}>f8HSZD2kx3q(cRozkZ2O!n=u=k5KA;-zWLj>^(sls)CYYQv98 zn&*5)<`Jlq4M%?zZ6<1LEk}i!_T^SsHac6+pZ#cmE6TnpD&PM;nm~P|Sw{E5@1Y0M zvHs7i#SJnq3x0YE{hb!Jy5bOa>Ed?>>kciV9$7CEe6?fx-kj5F@pUL?MhPAAjp#%+ zF&X}(=+Mj?u4DYDFMj{DM0&A+cpmJMX9crww+8m4+7~-G?d_fN$;}?W4^?!f_>jL>mrh>cXm=#d7{TSy)?$xEuckE^B(qM6@`mEN>e`6}vdn2O9I{%p z4RchpqSsSlO`EE98Cl&?@>qD*>BbM!M_zk0tuyoT%StCy4pV;v#qqp-u{FZOD> zQkmq0>AYuPZ=IduyX_&x4(&Fnq8=&U^B$_>;C~cf_Rn-m-)VtkI;u_=C3mJa$t)7> zm_D-~a$Clf|5*Lqu6Dkteqs&(>;3tHjFPWa2UtIcoZPl{#1MYo{)9|I6Pt3LV?9Auema zq!Ie*emhz(Gfb{^+< zc(B7tA0Bjm1YO+Jm{$K=^)@4=jZNjeDI4m$TJ!2V_VD0J?Gtr~_%%i$uqSnGYX$q>C5 zCy_*W>&R#F&xwkzdbit?Z$c+%adwA2q5rd52QS(ka_dSvW=anyPfSiW#=F&ip)y|& zg>|bKL-s0lZ(=>5_q{|9g__NB@Yp@k1+n-=LF^6a$$SMPp-U2h7tX$#k+Qesr!!Jr zxg$EUhanl*+xP+1OnY{WY@q?qHjGYd_Umt(j7}uL`Ih9o17&ToQydOR?alk7>o5EDgETnMJ;gU#!04U0DNY*mnaJ ze0Gjc2KdE)X}6;|H~wzuao@*D?L3P_r1Ip}2+pv7U3j=Eo|U2dw4j_&S=XAm$P3Aw z#y@l(c0Uq7>T2WMZwr6UojX75CGf9q!NNSq|yto#=Gw5 ziJqeGaPE&a&y`lY>iRz$9_TDwF!3#4hqq&w>jTgEzgQ_Vx&EK+OYrbgNXU9)`l zkn%6FnRwvQayYo9sIepGKd&AVj}#wBMQvgPUy+`idFR5@=a>!ZNlls$^#6Wa?$>ZWWKDrkjCt5dfWUrlKb$nMppS`ar z2(B_3KMog>lPo>)^@(syUovYbR(-lS`b5#egpYnKDfx5tG^-Bh=o8Ja^1Gwutbe=C z25<^I8IruK*WRZQ($oLcI@-f&yLwthcbtFH*IK``?olK)i4e`D26&~8w6jY{1^-$# zTN!`&>iM$1@T};A({_h@khXi<_sQDO>np{FZ$#|Wk%(*lR9rANxgH}!GgtZmZ}yEm z_OavZZb8H~Xp@)Ldtm0M(o0o*0#Q8Guy>1>2PU*26C}Phzt6s2SAT4p+#n7oDi6r) zv8&7^(7FG6au8aA)w|V?^Wm`1(w%XFD{J6yTIKBS8r{|++jPA3;;y@XZ6>&Ac_z;G zxYpQzXQbdWx{KE5nXdHSk!%<@6I$U}$W>kJT4CVSM3vzna-W@(%<=py_^D^JYuYKbU*{)a~apS z%h%Z{D8ZRq z0Z9Za$}W%)dstRHuPiO3i)3kwcx$hLg~p6L4PFbQe+Vh;`+GL3h#GdYj1H z^g`~yU*bpnftgA4@PnEOSxf%o(eYXI5*R%4pKZN=e27PC4c)34MX&77HNG;AzyU5lN#ev14?T$(}UGOtRr)Q+l4GE2(Q!hWQ*}=%!(2LkR4{Y>) z$8bCM7az%dR{puwqpov$3D4lVV9GcvmG*5H zUst=G2#?06oL+))QV9;k8LgUbm>gbeK+HoH?M}_xsN*GcTo^9!Olk>wjE?ns-;#zE z^BQlZTaW8Iyk@Oa^<(5<`t^pJ*Y)MlTDOU6dtHO4by|P@cSa9?u-yJrGh>ZCD@q)l z){)v^lCJ7p$52GWpchsMo0AM0OTQu9I>`0nQ``9Wshi9 z>SFe-c$lSU??qJh?KG91MezM}u|R}!%#PGhb!Zo+hqUv3?WWtzR*ME7pas;8KjZbR z_HD;=MdJEYR`=d*U)P*|s@Q`6u9j5SAlq9u-P?@<=IhwPIiX?p(~^CDRX8D^WJuxx z?I9i%g`E}zei=^d`0d5^r5;G(mD)N^>9lTS8{AA*gJqhXqlx_<_Fin1a)_Pa7nPVJ zIg9t+Zr{&rW6xbyPpq)1>?bM71|DWiBq~NC{_^c#y`7T<0M{@Y*xRfWgj}0 zOLo|yoRJaz?3p#hQLRlip`5~s{f_o}uezf&BUL)e8rc~S;9X&F;>qR^59YcsLR*QM zjco2#Sw$Wgx%1!JeMd`>SmGt-GQMH=fWCm=Y^rDYMwFVD?$y-!!Hr$bh z`}WgqmXB&KUl%2L31T3k3GUY%emJ1At`1fKb6UH9Q+tnkN6R!stSl6^t}Xp`L`^JX zKPIfHI_F#M+jw;yDYhG8U<1=$8Ce3Sw`E0ChZ=|O{E2W zPS^CD2hw{?xyLE+t<6AWFRbcW$p!I(KIbqN1h`;EzB(L`ScPhpz6F5Q%p)?laCvGt z$3xN{*(?H2a`51+AXw5KxtYiWf2L~~r|r1DLVGWZCc;71e|)QtdmA6Z4ye%cikpl? z+MrZ*9IP|k(Kh#t`9u94wND03-n=8Z=p=Ew(7e;~SGCLSSx&pXCK>!@>I?l}{E@rW zmU|$)?(t*&&HvFsjiZL8%~>(pV0vz5Mw3!Xeh~|^Gq(a}2 zX{UP@s@!qSkXfVW~29u`W9YNgMGjL6>l55@7QT%fe4(~10EXA={jN*CGO3GU3-Y^ z$~;xy!b6|@4~9ZdX#U6gb~pl#%@R+Fx_QfxJ>HfE>^9zWTANjEHMGUxB6xpWH270# zICn=rFAX8X-7pOVQfPZtykUmfY8dxQPUgyRxgjD`dF5%X%_I*&KoBZ z-|f4(2Vwfi?j(Ce7g))UB@xl?9_psra4cG0bz4Vh#U$?6?#RlBFWuWlo?d33`Pg~w zVc#lO@ojy5Rx@>S@{{^`sHvl~vGQPS#YgsZ?wx&5eSJ~q|M&~;b9;t6*ah}+?ev1dAJ%HMulxR1)FhyzKl z6+7ueW&E6V^S!_10DQP-kVj2hjrTS%v?FTL`)V(A^wP=_JMs05E)Ek3c~$gtT9Qqz zg?mIs9yJWlD-eFS-I8;mt&81t7;7UK$HGbvmXj- zh)@oBJXQSDy9zBmm`UG>XP5hHv&y-h9}2>Y#_Q~ZUsy!leg9&2h#_=!yRWd zcl8}?Ts(?q_b~7bhu_?4iN%__FgD>?=}_?ol`Z>T+UjQoCSNgh-&Llf^~s_+8)9!n zUZjr%nhQi~=8v2RCF)(j)$(pZRHk$GMa$s}3xd>`DxhA8-Nh1J#K>qs9;7f~~d ze{B#QzhU8|52t&0IenX5sxx||uHB?JRA#IHVcY#ue+DKNL%eL<{Z~nf*U( zVlI3T7@O}SOIX8two+b>7j9{vJzV0=qEht!>OprL@2YxX-`L4@o}u=?3TMg3ha=xC zBLsq9m#CMsU9=79(ALV#C(vv@x9pLy@(a@*3H`Tf)1L}icEU;h%wqbiXmAhvZSg1k z4Ig&=?yTmlu8IXc@?(v{MOMQYDKRyFY}M@b-TIy_bm*IP>-|~*9<$E3h5eaZzGgQ% zg=K$+_gJ8I7yaRu*Y$6I*=?$5{7uG094Ha3v6UMVo}9SZ_khxA5xynMW7_$rt?YZa4?Ceo|BM~v4!q{i@Dww?a#5&>+B__fyov{KZGLBz<+#;g%W=F$V=-G2~ zaWm@|n^mbICim4%UxCA+>=GlgF3oc^VE4xQf%QYnr(5L%eyAP)NB!4N`!T-Sa7uSx zEt0XnKHcz|I(0lsf64r(7a5;uNWA8+H!b|sku&mp5BsR_^KC)FxbshAujwxu)2whP zD`jdwv`3nByaZlGW3KJ22^Ic**QcCpN3{I5D;V&l)$*Qarft8(3QmNWY(gjN>H|lD zrV509dhtP08!-?p0K3$;A7nOZJKFa5XxkrlWcVN_b#ITw4vr4gUp%CVFU*L~Dj%ZC z2bFzX6gF!MzotS!eM(MCoA+R#V_?^1x$%1*){eRHE%(lK{nn@To9w@=A`WEdj|7@_ zw866(`kl7qyu`{n!!T{~WQiA9Ef1jA(RGR^g$>m3vgU|K+@3SFg?b8>St%l_xlw_& z(!2{Mvij??Rn@7*9>7mHbw&(Vy3PH1qs`p*hdUo{@##IJxJ!I(r$5^+HD2~WD~f7~ zHZ5@Jq(V-;jORKK>Q-n>r{L#%a+b6Tg}<#<{!`y3gzEUtAnfb$`;|IDboybP4RN$_ zv^cc)k)or>-(F?Iky5xG1RHkc5Yp6W_R%h}XmT6mYDJq>;QE#se%v}zWNYLhZZi)v zYgw;{z`&^&^GNE?>fbqSH85i6iQDUeq+s8)eKl~`HRt5~R9ZOeJZsNrWNOaX9{R81 zB;gEl8HdTcvbI`t4um&2Q>z;P0F|%y9?0yfTHWM2tV?e_pN6ojxvAW3LjDXybe%|( zN>X)5suP~yg6NDMo}IX)S)>P&E*ew3uuu4F4;MwAMZT`s=OLm6d;Fj3nQlX$bM9Lo zZB2++s%1s-vxc-r51L(~OE^3EVVK-Qi=V-jJk8_U`K;fUH1ZyrrN;iUBm1_i4I``# z{GeW}A^Jphv@jVxRbcSew4gnt0Fd|Bm2k6}mu*l;Azw|*IV7oq>HGzyHPHFto`3MJv zx8qm-q8*x8rZr}S=w~}eGLE$C+Afr3r_8WDY+r|K@emB?uH2F*!)0O)RyBQv2Sm>31u`tF+C%)O>=ii4SzP=6;)7pj z#_0!DWY6=e#zbughBTyy=)JcGxJw^yVKqyBUHgXfHEB)Wki_MaB6M17{&H6e< z5)0YR`#YmVljQX+5ubZC=XiPdYHhPR{xa&y?eUQ!YOt?rw5d0v+XCnO0v_pG+HhZ2 zN0CH{a-dc_&flI{H5@B}HH@3BV=}4wiY;J1M&Ui(tDnv6q`nzi?3ye7L}UxzKd%2v zOs;X!aAcs{_UTG77N^wqFk%E=SAJQmW%~~ob*0s1LCA{7Lq-q$q2cI;JK1`X*U{Tw zwR2;|HVm#nRngVrC+oh%ViXrvbLWqn#_jTogY2_x=G^WjP9?@Os|%FMHgyAexe?u= zo_B@u_Tk|_u(_W!+I(Vj?3e5h-loZuRYlD`T0@Y>q>OsBq5p2B^M2lNJa}>L2Q5Y_ zd{$VSJ{udXO@DY*Z*R5d-3e7*^w_Fpx^G&hV`Hl<=yu)}+Ks;p`t_|*$dZpYS;6XJ zlRew;mf5m*5*2z_xJ{<~ukGJ`JNuNa3QuFL%=d|C;4~E0G^RZo4=q0}>Ow_){K>Km zj9e<-QH!TP{4{h1E>(CG?4ud57{ zeV0jaN`_``EOZnAX84+Vo5+udKxCuybmnqeQHlJt?pjx&oK+A0eqFuLuP{K4%xGO> z5SwkHa7JqXmt;XX%>&v(6=GPVN}tOaDK;>?1YUp<=;*dd2ZCPzq~^#DBI_oK1twIH z8$tNJycmCG4dGWA30!6b5hxkOfr%4M zzG)+&|5g3mZXq>DGJYsoz!qkAckdm!h<l#>wMZtj=<0{gN^>)j*=v)bckIsbIus#ARi7zl2-e6)Eobe?~L-tqBfK4 zCY(oWwEmfX0s-?cO2fH_VW_^p#~aQJKCUrRo7Zv68RN&I`S4I=&3*(?5-U}EG<(=1 z$Yqkl@Fah~|2qB`E_F-&Y8TE7PHP2r#C|?pBpmv~yXyIJV!Q1?l#n(Vbz0sjOj)$? z>jtLJtI{eWuY;%V1$Us**g(C8Ze^p9FRXyrNvL+9vJ;opcjRXz_Rw)xXV@tcI{qsE za^J_ptp}DKUw^ROwH7=*wmNRjO=Od2x8BIt&o=7sS2WkkelX!mvRrQ{Pkw%8((Q@= z7>6IRZ;!vE5;`&JHBLCAz{iVCpL7(7ZDt}edexJJ>SXrFtSp2Q3zUR}u z;S$n>F?}r{JF7 z>IeV3H8As=QKFk;%g~=*zFzT^_M`gt|I50!6}^fe3cx-}ULc^4Fgk)E<7AKo@yaVf zkmMo^IOgfC?_Ux+KV7>I)pb~1UELc_P{+n(u64*5&02x~Ekdylr9tH^{(T%d zIY%3sr&&o_d%EAt?Qm@)QY8<;C|T>XmnnrPX@wc5XSH}6w~2nqSaE_9TIY>l-Nya$ zRcnwXo{Q)gC2n2!GX`43Zm^y_MLq7mOC^!I#Jx!a>_#?sWJ|{q^QL&y8Q!cFE%74B zx`KbS=ezYpq9J7{{+DS>l;T?cW=in~Qfb7Lb;$Fq3*EQs-Z)@S1(uF{F>&^oq3b)Q~(3*%{odo8@@+BsS|#Y%!d@pM8B%yAOktw;x+(-tiqrc#>ifVk6ZK#=in*+ z@=8OewAEAoW+l(__rY3?JG7Jr*kxkN?KHE|Tl>bR*brWKe_zYr&Is(Nu@PO*?9-l9 zGs|mFy*KRer11fbws|)fIw-fYuvtTN-^$&-Z*^izW%BTZ*5=mF{9XH+If3|DP_fP0 z!>u8iPw;i^+?M@3^|{x^T{Ql(chcI!YZwOJ#ffW~=YJYbzaIHL`yM^zd)ZoVyf?#L zZEpn1^JIkn1apfgw3XDOmfxoq{I>FGKlTh8eMmk&O@YM8rgP;_@Ch6&D+|ZEQnIFfC{x(vQ|6M8b zZZZg16kZH%B_N+zQJDT|Mt?UgKF;UAZusEwzg9~puE6H+Ihw}WOOstut4h+xlHf>s zRVw+M-whWsi|b*O#~V7sE~4`5NQ0Xy++Or>)Dp|*tWQqzwEp7aPs3xnv9SQPr<6Yw zX%cHS5B2M4BJF#7yxyOIaB!T9L$8^W}4X zc08#E_LCWrsLQn!uk8hAor&*DvC+ib{6~g`78E_H&+L=^m@h>?AuyGMSH)D zC&N8&tLB$w3D{F8?att*v0m)Y{cyAruu(@jC05*|Tp)yq*2+ zO2yV`mnkQ<_**SEi&D#pcRr2vdp9dkySV56St(d7a{>qR`JazIq>jfag`b{p Date: Tue, 31 Aug 2010 15:16:37 +0800 Subject: [PATCH 356/641] THP: Add NLHE FTP.fr .hp file --- ...1-0.02.201008.Weird.table.character.txt.hp | 564 ++++++++++++++++++ 1 file changed, 564 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-6max-EUR-0.01-0.02.201008.Weird.table.character.txt.hp diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-6max-EUR-0.01-0.02.201008.Weird.table.character.txt.hp b/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-6max-EUR-0.01-0.02.201008.Weird.table.character.txt.hp new file mode 100644 index 00000000..85683ac1 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-6max-EUR-0.01-0.02.201008.Weird.table.character.txt.hp @@ -0,0 +1,564 @@ +{ u'Player1': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 1, + 'sitout': False, + 'startCards': 0, + 'startCash': 129, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player2': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 2, + 'sitout': False, + 'startCards': 0, + 'startCash': 170, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player3': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': True, + 'raisedFirstIn': True, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 3, + 'sitout': False, + 'startCards': 0, + 'startCash': 163, + 'street0Aggr': True, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 3, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 5, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player4': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': True, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': True, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 4, + 'sitout': False, + 'startCards': 0, + 'startCash': 227, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': True, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -1, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player5': { 'card1': 1, + 'card2': 34, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': True, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': True, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'B', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 5, + 'sitout': False, + 'startCards': 8, + 'startCash': 200, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': True, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Player6': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 6, + 'sitout': False, + 'startCards': 0, + 'startCash': 330, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}} From 87b6f834c3776e7bf14b18fdd3fa9db8274b58a8 Mon Sep 17 00:00:00 2001 From: Worros Date: Tue, 31 Aug 2010 15:43:31 +0800 Subject: [PATCH 357/641] FTP: Rename test file --- ...02-0.05.201007.Short.lived.date.format.txt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt b/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt new file mode 100644 index 00000000..ca823407 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt @@ -0,0 +1,39 @@ +Full Tilt Poker Game #22488827305: Table Flash - $0.02/$0.05 - No Limit Hold'em - 15:13 ET - Wed, July 21, 2010 +Seat 1: ronaldd1969 ($2.70) +Seat 2: stark00 ($4.41) +Seat 3: T0r3x ($12.97) +Seat 4: yrthligar ($15) +Seat 5: MANUTD ($8.56) +Seat 6: gimick ($2) +Seat 7: vision ($2.97) +Seat 8: shleekom ($2) +Seat 9: proud2Bwhack ($8.77) +MANUTD posts the small blind of $0.02 +gimick posts the big blind of $0.05 +The button is in seat #4 +*** HOLE CARDS *** +Dealt to gimick [Qs 4d] +vision folds +shleekom folds +proud2Bwhack folds +ronaldd1969 folds +stark00 folds +T0r3x folds +yrthligar has 8 seconds left to act +yrthligar has timed out +yrthligar folds +MANUTD folds +Uncalled bet of $0.03 returned to gimick +gimick mucks +gimick wins the pot ($0.04) +*** SUMMARY *** +Total pot $0.04 | Rake $0 +Seat 1: ronaldd1969 didn't bet (folded) +Seat 2: stark00 didn't bet (folded) +Seat 3: T0r3x didn't bet (folded) +Seat 4: yrthligar (button) didn't bet (folded) +Seat 5: MANUTD (small blind) folded before the Flop +Seat 6: gimick (big blind) collected ($0.04), mucked +Seat 7: vision didn't bet (folded) +Seat 8: shleekom didn't bet (folded) +Seat 9: proud2Bwhack didn't bet (folded) From bb41c2906b5155318ba1afc6bbe8ed16c3c770c3 Mon Sep 17 00:00:00 2001 From: Worros Date: Tue, 31 Aug 2010 15:46:11 +0800 Subject: [PATCH 358/641] THP: Add .hp file for FTP wierd date format --- ...0.05.201007.Short.lived.date.format.txt.hp | 846 ++++++++++++++++++ 1 file changed, 846 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt.hp diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt.hp b/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt.hp new file mode 100644 index 00000000..01ff416e --- /dev/null +++ b/pyfpdb/regression-test-files/cash/FTP/Flop/NLHE-9max-USD-0.02-0.05.201007.Short.lived.date.format.txt.hp @@ -0,0 +1,846 @@ +{ u'MANUTD': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 5, + 'sitout': False, + 'startCards': 0, + 'startCash': 856, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'T0r3x': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 3, + 'sitout': False, + 'startCards': 0, + 'startCash': 1297, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'gimick': { 'card1': 50, + 'card2': 16, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'B', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 6, + 'sitout': False, + 'startCards': 37, + 'startCash': 200, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 4, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'proud2Bwhack': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 4, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 9, + 'sitout': False, + 'startCards': 0, + 'startCash': 877, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'ronaldd1969': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 1, + 'sitout': False, + 'startCards': 0, + 'startCash': 270, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'shleekom': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 5, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 8, + 'sitout': False, + 'startCards': 0, + 'startCash': 200, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'stark00': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 2, + 'sitout': False, + 'startCards': 0, + 'startCash': 441, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'vision': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 6, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 7, + 'sitout': False, + 'startCards': 0, + 'startCash': 297, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'yrthligar': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 4, + 'sitout': False, + 'startCards': 0, + 'startCash': 1500, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}} From 1a515534b42ae426027399764bf155e0f71acc0e Mon Sep 17 00:00:00 2001 From: Mika Bostrom Date: Tue, 31 Aug 2010 11:40:21 +0300 Subject: [PATCH 359/641] Try to fix profit/100 --- pyfpdb/Stats.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index 3616fa87..a9dd137f 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -228,15 +228,17 @@ def wmsd(stat_dict, player): _('% won money at showdown') ) +# Money is stored as pennies, so there is an implicit 100-multiplier +# already in place def profit100(stat_dict, player): """ Profit won per 100 hands.""" stat = 0.0 try: stat = float(stat_dict[player]['net'])/float(stat_dict[player]['n']) return (stat, - '%.0f' % (100.0*stat), - 'p=%.0f' % (100.0*stat), - 'p/100=%.0f' % (100.0*stat), + '%.2f' % (stat), + 'p=%.2f' % (stat), + 'p/100=%.2f' % (stat), '%d/%d' % (stat_dict[player]['net'], stat_dict[player]['n']), _('profit/100hands') ) From 2ab01fa9d9dba42471361fc65e050338778e6937 Mon Sep 17 00:00:00 2001 From: Eric Blade Date: Tue, 31 Aug 2010 04:56:28 -0400 Subject: [PATCH 360/641] some code and comment cleanups and clarifications, mo betta fasta. --- pyfpdb/Hud.py | 58 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index 8454f433..49dc91cc 100644 --- a/pyfpdb/Hud.py +++ b/pyfpdb/Hud.py @@ -43,8 +43,8 @@ if os.name == 'nt': import win32api import locale -lang=locale.getdefaultlocale()[0][0:2] -if lang=="en": +lang = locale.getdefaultlocale()[0][0:2] +if lang == "en": def _(string): return string else: import gettext @@ -78,7 +78,8 @@ class Hud: # cannot touch the gui if parent is None: # running from cli .. self.parent = self - self.parent = parent + else: + self.parent = parent self.table = table self.config = config self.poker_game = poker_game @@ -95,6 +96,7 @@ class Hud: self.popup_windows = {} self.aux_windows = [] + # configure default font and colors from the configuration (font, font_size) = config.get_default_font(self.table.site) self.colors = config.get_default_colors(self.table.site) self.hud_ui = config.get_hud_ui_parameters() @@ -107,6 +109,7 @@ class Hud: # do we need to add some sort of condition here for dealing with a request for a font that doesn't exist? game_params = config.get_game_parameters(self.poker_game) + # if there are AUX windows configured, set them up (Ray knows how this works, if anyone needs info) if not game_params['aux'] == [""]: for aux in game_params['aux']: aux_params = config.get_aux_parameters(aux) @@ -118,14 +121,16 @@ class Hud: self.creation_attrs = None def create_mw(self): - # Set up a main window for this this instance of the HUD win = gtk.Window() + win.set_skip_taskbar_hint(True) # invisible to taskbar win.set_gravity(gtk.gdk.GRAVITY_STATIC) - win.set_title("%s FPDBHUD" % (self.table.name)) - win.set_skip_taskbar_hint(True) - win.set_decorated(False) - win.set_opacity(self.colors["hudopacity"]) + win.set_title("%s FPDBHUD" % (self.table.name)) # give it a title that we can easily filter out in the window list when Table search code is looking + win.set_decorated(False) # kill titlebars + win.set_opacity(self.colors["hudopacity"]) # set it to configured hud opacity + win.set_focus(None) + win.set_focus_on_map(False) + win.set_accept_focus(False) eventbox = gtk.EventBox() label = gtk.Label(self.hud_ui['label']) @@ -133,6 +138,7 @@ class Hud: win.add(eventbox) eventbox.add(label) + # set it to the desired color of the HUD for this site label.modify_bg(gtk.STATE_NORMAL, self.backgroundcolor) label.modify_fg(gtk.STATE_NORMAL, self.foregroundcolor) @@ -140,9 +146,11 @@ class Hud: eventbox.modify_fg(gtk.STATE_NORMAL, self.foregroundcolor) self.main_window = win + # move it to the table window's X/Y position (0,0 on the table window usually) self.main_window.move(self.table.x, self.table.y) # A popup menu for the main window +# This menu code has become extremely long - is there a better way to do this? menu = gtk.Menu() killitem = gtk.MenuItem(_('Kill This HUD')) @@ -457,6 +465,13 @@ class Hud: log.debug("setting self.hud_params[%s] = %s" % (param, style)) def update_table_position(self): + # get table's X/Y position on the desktop, and relocate all of our child windows to accomodate + # In Windows, we can verify the existence of a Window, with win32gui.IsWindow(). In Linux, there doesn't seem to be a + # way to verify the existence of a Window, without trying to access it, which if it doesn't exist anymore, results in a + # big giant X trap and crash. + # People tell me this is a bad idea, because theoretically, IsWindow() could return true now, but not be true when we actually + # use it, but accessing a dead window doesn't result in a complete windowing system shutdown in Windows, whereas it does + # in X. - Eric if os.name == 'nt': if not win32gui.IsWindow(self.table.number): self.parent.kill_hud(self, self.table.name) @@ -465,8 +480,8 @@ class Hud: return False # anyone know how to do this in unix, or better yet, trap the X11 error that is triggered when executing the get_origin() for a closed window? if self.table.gdkhandle is not None: - (x, y) = self.table.gdkhandle.get_origin() - if self.table.x != x or self.table.y != y: + (x, y) = self.table.gdkhandle.get_origin() # In Windows, this call returns (0,0) if it's an invalid window. In X, the X server is immediately killed. + if self.table.x != x or self.table.y != y: # If the current position does not equal the stored position, save the new position, and then move all the sub windows. self.table.x = x self.table.y = y self.main_window.move(x + self.site_params['xshift'], y + self.site_params['yshift']) @@ -487,10 +502,10 @@ class Hud: return True def on_button_press(self, widget, event): - if event.button == 1: + if event.button == 1: # if primary button, start movement self.main_window.begin_move_drag(event.button, int(event.x_root), int(event.y_root), event.time) return True - if event.button == 3: + if event.button == 3: # if secondary button, popup our main popup window widget.popup(None, None, None, event.button, event.time) return True return False @@ -543,7 +558,7 @@ class Hud: self.config.save() def adj_seats(self, hand, config): - + # determine how to adjust seating arrangements, if a "preferred seat" is set in the hud layout configuration # Need range here, not xrange -> need the actual list adj = range(0, self.max + 1) # default seat adjustments = no adjustment # does the user have a fav_seat? @@ -621,7 +636,7 @@ class Hud: [config.supported_games[self.poker_game].stats[stat].col] = \ config.supported_games[self.poker_game].stats[stat].stat_name - if os.name == "nt": + if os.name == "nt": # we call update_table_position() regularly in Windows to see if we're moving around. See comments on that function for why this isn't done in X. gobject.timeout_add(500, self.update_table_position) def update(self, hand, config): @@ -656,8 +671,8 @@ class Hud: if this_stat.hudcolor != "": window.label[r][c].modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(this_stat.hudcolor)) else: - window.label[r][c].modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.colors['hudfgcolor'])) - + window.label[r][c].modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.colors['hudfgcolor'])) + if this_stat.stat_loth != "": if number[0] < (float(this_stat.stat_loth)/100): window.label[r][c].modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse(this_stat.stat_locolor)) @@ -668,9 +683,12 @@ class Hud: window.label[r][c].set_text(statstring) if statstring != "xxx": # is there a way to tell if this particular stat window is visible already, or no? - window.window.show_all() + unhidewindow = True tip = "%s\n%s\n%s, %s" % (statd['screen_name'], number[5], number[3], number[4]) Stats.do_tip(window.e_box[r][c], tip) + if unhidewindow: #and not window.window.visible: # there is no "visible" attribute in gtk.Window, although the docs seem to indicate there should be + window.window.show_all() + unhidewindow = False def topify_window(self, window): window.set_focus_on_map(False) @@ -686,7 +704,7 @@ class Stat_Window: # This handles all callbacks from button presses on the event boxes in # the stat windows. There is a bit of an ugly kludge to separate single- # and double-clicks. - self.window.show_all() + self.window.show() #_all() if event.button == 3: # right button event newpopup = Popup_window(self.window, self) @@ -745,11 +763,13 @@ class Stat_Window: self.window = gtk.Window() self.window.set_decorated(0) + self.window.set_property("skip-taskbar-hint", True) self.window.set_gravity(gtk.gdk.GRAVITY_STATIC) self.window.set_title("%s" % seat) - self.window.set_property("skip-taskbar-hint", True) + self.window.set_focus(None) # set gtk default focus widget for this window to None self.window.set_focus_on_map(False) + self.window.set_accept_focus(False) grid = gtk.Table(rows = game.rows, columns = game.cols, homogeneous = False) self.grid = grid From 9704cd7fe5a88d1e3a91749ed04280a33f423021 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Tue, 31 Aug 2010 22:34:48 +0100 Subject: [PATCH 361/641] routines to store site list in config --- pyfpdb/Configuration.py | 9 ++++++++- pyfpdb/Database.py | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index e9f1521c..8c5b4650 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -697,10 +697,11 @@ class Config: self.aux_windows = {} self.hhcs = {} self.popup_windows = {} - self.db_selected = None # database the user would like to use + self.db_selected = None # database the user would like to use self.general = General() self.emails = {} self.gui_cash_stats = GUICashStats() + self.site_ids = {} # site ID list from the database added,n = 1,0 # use n to prevent infinite loop if add_missing_elements() fails somehow while added > 0 and n < 2: @@ -1390,6 +1391,12 @@ class Config: if font_size is not None: site_node.setAttribute("font_size", font_size) return + def set_site_ids(self, sites): + self.site_ids = dict(sites) + + def get_site_id(self, site): + return( self.site_ids[site] ) + def get_aux_windows(self): """Gets the list of mucked window formats in the configuration.""" return self.aux_windows.keys() diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index f1b8dd72..f8119404 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -302,6 +302,7 @@ class Database: self.saveActions = False if self.import_options['saveActions'] == False else True if self.is_connected(): + self.get_sites() self.connection.rollback() # make sure any locks taken so far are released #end def __init__ @@ -466,6 +467,15 @@ class Database: self.cursor.execute(self.sql.query['set tx level']) self.check_version(database=database, create=create) + def get_sites(self): + self.cursor.execute("SELECT name,id FROM Sites") + sites = self.cursor.fetchall() + self.config.set_site_ids(sites) + + def add_site(self, site, site_code): + self.cursor.execute("INSERT INTO Sites " + "SELECT max(id)+1, '%s', '%s' " + "FROM Sites " % (site, site_code) ) def check_version(self, database, create): self.wrongDbVersion = False From 06b34e86487d6b6498c977f0e766f1345c86eb7e Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Tue, 31 Aug 2010 22:44:41 +0100 Subject: [PATCH 362/641] clarify difference between site and filter to allow 2 sites from same network, prompt to add site to db if missing --- pyfpdb/Hand.py | 3 +-- pyfpdb/HandHistoryConverter.py | 13 +++++++--- pyfpdb/OnGameToFpdb.py | 2 +- pyfpdb/fpdb.pyw | 45 ++++++++++++++++++++++++++++++++++ pyfpdb/fpdb_import.py | 5 ++-- 5 files changed, 60 insertions(+), 8 deletions(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 7ae5f044..b56002c3 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -58,7 +58,6 @@ class Hand(object): LCS = {'H':'h', 'D':'d', 'C':'c', 'S':'s'} SYMBOL = {'USD': '$', 'EUR': u'$', 'T$': '', 'play': ''} MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'} - SITEIDS = {'Fulltilt':1, 'PokerStars':2, 'Everleaf':3, 'Win2day':4, 'OnGame':5, 'UltimateBet':6, 'Betfair':7, 'Absolute':8, 'PartyPoker':9, 'Partouche':10, 'Carbon':11, 'PKR':12 } def __init__(self, config, sitename, gametype, handText, builtFrom = "HHC"): @@ -66,7 +65,7 @@ class Hand(object): self.config = config #log = Configuration.get_logger("logging.conf", "db", log_dir=self.config.dir_log) self.sitename = sitename - self.siteId = self.SITEIDS[sitename] + self.siteId = self.config.get_site_id(sitename) self.stats = DerivedStats.DerivedStats(self) self.gametype = gametype self.startTime = 0 diff --git a/pyfpdb/HandHistoryConverter.py b/pyfpdb/HandHistoryConverter.py index 860d05e1..6506afca 100644 --- a/pyfpdb/HandHistoryConverter.py +++ b/pyfpdb/HandHistoryConverter.py @@ -72,7 +72,9 @@ class HandHistoryConverter(): re_tzOffset = re.compile('^\w+[+-]\d{4}$') - def __init__(self, config, in_path = '-', out_path = '-', follow=False, index=0, autostart=True, starsArchive=False, ftpArchive=False): + # maybe archive params should be one archive param, then call method in specific converter. if archive: convert_archive() + def __init__( self, config, in_path = '-', out_path = '-', follow=False, index=0 + , autostart=True, starsArchive=False, ftpArchive=False, sitename="PokerStars" ): """\ in_path (default '-' = sys.stdin) out_path (default '-' = sys.stdout) @@ -80,8 +82,10 @@ follow : whether to tail -f the input""" self.config = config self.import_parameters = self.config.get_import_parameters() + self.sitename = sitename #log = Configuration.get_logger("logging.conf", "parser", log_dir=self.config.dir_log) - log.info("HandHistory init - %s subclass, in_path '%s'; out_path '%s'" % (self.sitename, in_path, out_path) ) + log.info("HandHistory init - %s site, %s subclass, in_path '%s'; out_path '%s'" + % (self.sitename, self.__class__, in_path, out_path) ) # should use self.filter, not self.sitename self.index = index self.starsArchive = starsArchive @@ -114,7 +118,7 @@ follow : whether to tail -f the input""" def __str__(self): return """ -HandHistoryConverter: '%(sitename)s' +HandHistoryConverter: '%(sitename)s' filetype '%(filetype)s' in_path '%(in_path)s' out_path '%(out_path)s' @@ -252,6 +256,9 @@ which it expects to find at self.re_TailSplitHands -- see for e.g. Everleaf.py. self.readFile() self.obs = self.obs.strip() self.obs = self.obs.replace('\r\n', '\n') + # maybe archive params should be one archive param, then call method in specific converter? + # if self.archive: + # self.obs = self.convert_archive(self.obs) if self.starsArchive == True: log.debug(_("Converting starsArchive format to readable")) m = re.compile('^Hand #\d+', re.MULTILINE) diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py index 8ba8f9b4..d54972ac 100755 --- a/pyfpdb/OnGameToFpdb.py +++ b/pyfpdb/OnGameToFpdb.py @@ -45,7 +45,7 @@ else: # OnGame HH Format class OnGame(HandHistoryConverter): - sitename = "OnGame" + filter = "OnGame" filetype = "text" codepage = ("utf8", "cp1252") siteId = 5 # Needs to match id entry in Sites database diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index adeb34c7..b067073a 100755 --- a/pyfpdb/fpdb.pyw +++ b/pyfpdb/fpdb.pyw @@ -1232,6 +1232,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an return response def validate_config(self): + # can this be removed now? if self.config.get_import_parameters().get('saveStarsHH'): hhbase = self.config.get_import_parameters().get("hhArchiveBase") hhbase = os.path.expanduser(hhbase) @@ -1251,6 +1252,50 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an elif response == gtk.RESPONSE_NO: self.select_hhArchiveBase() + # check if sites in config file are in DB + for site in self.config.get_supported_sites(True): # get site names from config file + try: + self.config.get_site_id(site) # and check against list from db + except KeyError as exc: + log.warning("site %s missing from db" % site) + dia = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_WARNING, buttons=(gtk.BUTTONS_YES_NO), message_format="Unknown Site") + diastring = _("WARNING: Unable to find site '%s'\n\nPress YES to add this site to the database.") % site + dia.format_secondary_text(diastring) + response = dia.run() + dia.destroy() + if response == gtk.RESPONSE_YES: + self.add_site(site) + + def add_site(self, site): + dia = gtk.Dialog( title="Add Site", parent=self.window + , flags=gtk.DIALOG_DESTROY_WITH_PARENT + , buttons=(gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT + ,gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT) + ) + + h = gtk.HBox() + dia.vbox.pack_start(h, padding=5) # sets horizontal padding + label = gtk.Label( _("\nEnter short code for %s\n(up to 3 characters):\n") % site ) + h.pack_start(label, padding=20) # sets horizontal padding + #label.set_alignment(1.0, 0.5) + + h = gtk.HBox() + dia.vbox.add(h) + e_code = gtk.Entry(max=3) + e_code.set_width_chars(5) + h.pack_start(e_code, True, False, padding=5) + + label = gtk.Label( "" ) + dia.vbox.add(label) # create space below entry, maybe padding arg above makes this redundant? + + dia.show_all() + response = dia.run() + site_code = e_code.get_text() + if response == gtk.RESPONSE_ACCEPT and site_code is not None and site_code != "": + self.db.add_site(site, site_code) + self.db.commit() + dia.destroy() + def main(self): gtk.main() return 0 diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index 8ff2ba86..5fcbd1b0 100755 --- a/pyfpdb/fpdb_import.py +++ b/pyfpdb/fpdb_import.py @@ -384,7 +384,7 @@ class Importer: #rulog.writelines("path exists ") if file in self.updatedsize: # we should be able to assume that if we're in size, we're in time as well if stat_info.st_size > self.updatedsize[file] or stat_info.st_mtime > self.updatedtime[file]: -# print "file",counter," updated", os.path.basename(file), stat_info.st_size, self.updatedsize[file], stat_info.st_mtime, self.updatedtime[file] +# print "file",file," updated", os.path.basename(file), stat_info.st_size, self.updatedsize[file], stat_info.st_mtime, self.updatedtime[file] try: if not os.path.isdir(file): self.caller.addText("\n"+os.path.basename(file)) @@ -457,7 +457,8 @@ class Importer: idx = self.pos_in_file[file] else: self.pos_in_file[file] = 0 - hhc = obj(self.config, in_path = file, out_path = out_path, index = idx, starsArchive = self.settings['starsArchive']) + hhc = obj( self.config, in_path = file, out_path = out_path, index = idx + , starsArchive = self.settings['starsArchive'], sitename = site ) if hhc.getStatus(): handlist = hhc.getProcessedHands() self.pos_in_file[file] = hhc.getLastCharacterRead() From a03e83604435bcac4849569b3b163f2d583c686f Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 1 Sep 2010 10:38:54 +0800 Subject: [PATCH 363/641] DerivedStats: Stub in HandsActions calculation --- pyfpdb/DerivedStats.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index d79d49bf..56222e18 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -92,6 +92,8 @@ class DerivedStats(): self.assembleHands(self.hand) self.assembleHandsPlayers(self.hand) + if DEBUG: + self.assembleHandsActions(self.hand) if DEBUG: print "Hands:" @@ -207,6 +209,8 @@ class DerivedStats(): # 3betSB, 3betBB # Squeeze, Ratchet? + def assembleHandsActions(self, hand): + pass def setPositions(self, hand): """Sets the position for each player in HandsPlayers From 9a3d60e0b3f8f5fbd4958b054948655643902199 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 1 Sep 2010 10:47:13 +0800 Subject: [PATCH 364/641] HandsActions: Stub in the remaining calls for HandsActions --- pyfpdb/Database.py | 24 ++++++++++++++++++++++++ pyfpdb/DerivedStats.py | 6 +++++- pyfpdb/Hand.py | 1 + 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index f1b8dd72..9037e082 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1756,6 +1756,30 @@ class Database: c = self.get_cursor() c.executemany(q, inserts) + def storeHandsPlayers(self, hid, pids, adata, printdata = False): + #print "DEBUG: %s %s %s" %(hid, pids, adata) + if printdata: + import pprint + pp = pprint.PrettyPrinter(indent=4) + pp.pprint(adata) + + #inserts = [] + #for p in pdata: + # inserts.append( (hid, + # pids[p], + # adata[p]['startCash'], + # adata[p]['seatNo'], + # adata[p]['sitout'], + # adata[p]['card1'], + + #q = self.sql.query['store_hands_actions'] + #q = q.replace('%s', self.sql.query['placeholder']) + + #print "DEBUG: inserts: %s" %inserts + #print "DEBUG: q: %s" % q + #c = self.get_cursor() + #c.executemany(q, inserts) + def storeHudCache(self, gid, pids, starttime, pdata): """Update cached statistics. If update fails because no record exists, do an insert.""" diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index 56222e18..40646342 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -34,8 +34,9 @@ class DerivedStats(): def __init__(self, hand): self.hand = hand - self.hands = {} + self.hands = {} self.handsplayers = {} + self.handsactions = {} def getStats(self, hand): @@ -107,6 +108,9 @@ class DerivedStats(): def getHandsPlayers(self): return self.handsplayers + def getHandsActions(self): + return self.handsactions + def assembleHands(self, hand): self.hands['tableName'] = hand.tablename self.hands['siteHandNo'] = hand.handid diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 7ae5f044..d653af3b 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -275,6 +275,7 @@ db: a connected Database object""" db.storeHandsPlayers(self.dbid_hands, self.dbid_pids, self.stats.getHandsPlayers(), printdata = printtest) # TODO HandsActions - all actions for all players for all streets - self.actions # HudCache data can be generated from HandsActions (HandsPlayers?) + #db.storeHandsActions(self.dbid_hands, self.dbid_pids, self.stats.getHandsActions(), printdata = printtest) else: log.info(_("Hand.insert(): hid #: %s is a duplicate") % hh['siteHandNo']) self.is_duplicate = True # i.e. don't update hudcache From f993fb05b20ce3db7458c3cb5bab2567abfb8b84 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 1 Sep 2010 13:53:48 +0800 Subject: [PATCH 365/641] Regression: Add FTP PLO cash game HH --- .../FTP/Flop/PLO-6max-USD-0.01-0.02.201003.txt | Bin 0 -> 2840 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.txt diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.txt b/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.txt new file mode 100644 index 0000000000000000000000000000000000000000..d295294b8f906952ec10a08463ad383b68a7caf4 GIT binary patch literal 2840 zcmcgu+iuf95S?cv{=pKJD2Pj(Hfho~N?Jf%0!fMl6+*eEA|c2zZISqP;GCIkosHK< z^Z{AkY}Pxsb7p7u_pcNAE^|DQ^yD1BDQ0hFDPLqP3FgnFFAK~gxg)VOq$zt+#oLgY z&Kq*5vV9pqn)@hmE?+TU;oq**F)pxnCHF9Uh<8US@(6D%kFV#|^*7q453itOftT~P z%Fm!9lIK`6EivQ|;mIDxSPrmyj2P@&Rkc^3zk=^J-j-X^g;#ymN!bYhmxwaKcqtP_ zf*$W6Li$&O$G%imrHy?1go__8fWA8Cy-v=G6?dVdT%b=lAD-`D;0 zYX~NYW?#|0^5pV%YAQEHBnv!0R5HbAyk;IYau(|<*+NVoVJiVfv^qtE%mPZ%*CxER z*uofmgU2h#lKB+TG9OmTp5+*GgnCC7F7Ui4o(7k)amHP~)RqqiO3`1_WiG1@%eEm_T&`jTRxY(xvZ}ah&YH~H!j8Z$UdL!1!7(Ep!!JE$zYdt{x#&_9AK`_f4JRQ`+_vm7&4U41X> z^_%^H_mdGK9s$3*8l}T}7rn|VGjZMS?&Y_FaQ~yNO`Ys$V_o5`BE$OxXf1)3@#Z25 z-zW0Dkyh9n*nL^8QjF|FK6?+a;eOqOBk(;1Zen;^!v99fMFN{U`&819V2V7qO LkwhbA)b9NQdyB1e literal 0 HcmV?d00001 From 3f2edd2c6d6322c09ec2211462d53fa227f94d82 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 1 Sep 2010 14:05:59 +0800 Subject: [PATCH 366/641] Regression: FTP PLO additional hand with showdown cards for multiple players --- ...ax-USD-0.01-0.02.201003.River.Showdown.txt | Bin 0 -> 3254 bytes ...USD-0.01-0.02.201003.River.Showdown.txt.hp | 564 ++++++++++++++++++ 2 files changed, 564 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt create mode 100644 pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt.hp diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt b/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt new file mode 100644 index 0000000000000000000000000000000000000000..9add8f14a06826893d5869095ecfe653fc0e6946 GIT binary patch literal 3254 zcmb_eX>Sry6uqBK{121Z#3e2;Ws!cXQmUZ6S1hg`@6>tkul2b9i=ZOTz&AXivV@$Zoo@EqaYTpnZf4ELU7uFyjZNm=o@`AhIg;JlLn${t4-<#_&-LL6FhIFuShWB zJ!HoCN{BeA6{^-N`6h3X-9)VoAa3EkGJ57wSkz!LkKLHOYt{JC zNMjeG?up%QSUBlq9?5!eI5l+dI|l+~bm)1E@%3CyffT1Ed#{Dvj=u%%=Aw4wT!dg8yY_ncRmN!6olCr<)MCPiM2yE*H vI|VTVo|xhlwY^i8*{(nBrDIv&J8huKcyA+o|7Wc)Bi($$+`XpAw!8lV-g4t7 literal 0 HcmV?d00001 diff --git a/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt.hp b/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt.hp new file mode 100644 index 00000000..c719e569 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt.hp @@ -0,0 +1,564 @@ +{ u'B_Isreal22': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': True, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': True, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 2, + 'sitout': False, + 'startCards': 0, + 'startCash': 241, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': True, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'DrZartinger': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 6, + 'sitout': False, + 'startCards': 0, + 'startCash': 155, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'ShaDiv': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': True, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': True, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': True, + 'otherRaisedStreet4': False, + 'position': 'B', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 3, + 'sitout': False, + 'startCards': 0, + 'startCash': 277, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 1, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': True, + 'street2Bets': 1, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': True, + 'street2CheckCallRaiseDone': True, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': True, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -16, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Sorrowful': { 'card1': 15, + 'card2': 10, + 'card3': 42, + 'card4': 25, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 1, + 'sitout': False, + 'startCards': 0, + 'startCash': 209, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Timoha777': { 'card1': 24, + 'card2': 23, + 'card3': 16, + 'card4': 50, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': True, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': True, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 6, + 'sawShowdown': True, + 'seatNo': 5, + 'sitout': False, + 'startCards': 0, + 'startCash': 98, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 1, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 1, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 1, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 53, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 94, + 'wonAtSD': 1.0, + 'wonWhenSeenStreet1': 1.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'rockinalex': { 'card1': 49, + 'card2': 31, + 'card3': 19, + 'card4': 39, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': True, + 'seatNo': 4, + 'sitout': False, + 'startCards': 0, + 'startCash': 200, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': True, + 'street1Bets': 1, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 1, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': True, + 'street3Bets': 1, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': True, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -41, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}} From 188201025f35d22bf165c28f9d4c74486e1581f9 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 1 Sep 2010 20:51:23 +0800 Subject: [PATCH 367/641] Database: rename storeHandsPlayers to storeHandsActions As the stub function was supposed to be called --- pyfpdb/Database.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 9420a05c..c9591889 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1766,7 +1766,7 @@ class Database: c = self.get_cursor() c.executemany(q, inserts) - def storeHandsPlayers(self, hid, pids, adata, printdata = False): + def storeHandsActions(self, hid, pids, adata, printdata = False): #print "DEBUG: %s %s %s" %(hid, pids, adata) if printdata: import pprint From dd469e9ca3cc999e55829a5d7d31bf6b60f91f7a Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 1 Sep 2010 21:58:58 +0800 Subject: [PATCH 368/641] Regression: Stars: NL Single Draw --- ...Draw-USD-0.25-0.50-201009.Mucked.cards.txt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Stars/Draw/NLSDraw-USD-0.25-0.50-201009.Mucked.cards.txt diff --git a/pyfpdb/regression-test-files/cash/Stars/Draw/NLSDraw-USD-0.25-0.50-201009.Mucked.cards.txt b/pyfpdb/regression-test-files/cash/Stars/Draw/NLSDraw-USD-0.25-0.50-201009.Mucked.cards.txt new file mode 100644 index 00000000..ce82e9be --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Draw/NLSDraw-USD-0.25-0.50-201009.Mucked.cards.txt @@ -0,0 +1,40 @@ +PokerStars Game #48974407184: Single Draw 2-7 Lowball No Limit ($0.25/$0.50 USD) - 2010/09/01 9:49:52 ET +Table 'Eucharis II' 7-max Seat #4 is the button +Seat 1: Philippus40 ($60.90 in chips) +Seat 2: barbus533 ($21.15 in chips) +Seat 3: @sker86 ($82.60 in chips) +Seat 4: nl pokerr ($49.15 in chips) +Seat 5: heliodorus ($73.45 in chips) +Seat 6: s0rrow ($20 in chips) +Seat 7: KBH7 ($14 in chips) +heliodorus: posts small blind $0.25 +s0rrow: posts big blind $0.50 +*** DEALING HANDS *** +Dealt to s0rrow [2s 7d 4d 6d 8s] +KBH7: folds +Philippus40: folds +barbus533: folds +@sker86: raises $1.50 to $2 +nl pokerr: folds +heliodorus: folds +s0rrow: calls $1.50 +s0rrow: stands pat on [2s 7d 4d 6d 8s] +@sker86: discards 1 card +s0rrow: checks +@sker86: checks +*** SHOW DOWN *** +s0rrow: shows [2s 7d 4d 6d 8s] (Lo: 8,7,6,4,2) +@sker86: mucks hand +s0rrow collected $4.05 from pot +*** SUMMARY *** +Total pot $4.25 | Rake $0.20 +Seat 1: Philippus40 folded before Flop (didn't bet) +Seat 2: barbus533 folded before Flop (didn't bet) +Seat 3: @sker86 mucked [2h 8d 7h 7s 4s] +Seat 4: nl pokerr (button) folded before Flop (didn't bet) +Seat 5: heliodorus (small blind) folded before Flop +Seat 6: s0rrow (big blind) showed [2s 7d 4d 6d 8s] and won ($4.05) with Lo: 8,7,6,4,2 +Seat 7: KBH7 folded before Flop (didn't bet) + + + From b8a8a7217c47ff18454eceefc93492fbe3771589 Mon Sep 17 00:00:00 2001 From: Worros Date: Wed, 1 Sep 2010 23:43:23 +0800 Subject: [PATCH 369/641] Regression: OnGame hand history --- ...9max-USD-0.05-0.10-201008.Betfair.Skin.txt | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/OnGame/NLHE-9max-USD-0.05-0.10-201008.Betfair.Skin.txt diff --git a/pyfpdb/regression-test-files/cash/OnGame/NLHE-9max-USD-0.05-0.10-201008.Betfair.Skin.txt b/pyfpdb/regression-test-files/cash/OnGame/NLHE-9max-USD-0.05-0.10-201008.Betfair.Skin.txt new file mode 100644 index 00000000..c7de95c3 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/OnGame/NLHE-9max-USD-0.05-0.10-201008.Betfair.Skin.txt @@ -0,0 +1,41 @@ +***** History for hand R5-70000684-006 ***** +Start hand: Wed Aug 11 03:21:00 GMT+0100 2010 +Table: Kassel [73910684] (NO_LIMIT TEXAS_HOLDEM 0.05/0.10, Real money) +User: Player3 +Button: seat 8 +Players in round: 5 +Seat 9: Player1 (4.35) +Seat 3: Player0 (10.90) +Seat 5: Player2 (12.88) +Seat 6: Player3 (14.18) +Seat 8: Player4 (9) +Player1 posts small blind (0.05) +Player0 posts big blind (0.10) +--- +Dealing pocket cards +Dealing to Player3: [6s, 7h] +Player2 folds +Player3 folds +Player4 raises 0.30 to 0.30 +Player1 calls 0.25 +Player0 folds +--- Dealing flop [8c, Ts, 4d] +Player1 checks +Player4 checks +--- Dealing turn [Ac] +Player1 bets 0.10 +Player4 calls 0.10 +--- Dealing river [5d] +Player1 bets 0.10 +Player4 folds +--- +Summary: +Main pot: 0.90 won by Player1 (0.86) +Rake taken: $0.04 +Seat 9: Player1 (4.81), net: +0.46 +Seat 3: Player0 (10.80), net: -0.10 +Seat 5: Player2 (12.88) +Seat 6: Player3 (14.18) +Seat 8: Player4 (8.60), net: -0.40 +***** End of hand R5-73910684-276 ***** + From 26eca40b31269714c1cf17f843fede688267e50c Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 00:19:31 +0800 Subject: [PATCH 370/641] More HandsActions stubbing --- pyfpdb/Database.py | 10 +++++++++- pyfpdb/DerivedStats.py | 12 ++++++++---- pyfpdb/SQL.py | 13 +++++++++++++ 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index c9591889..88678136 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1782,7 +1782,15 @@ class Database: # adata[p]['sitout'], # adata[p]['card1'], - #q = self.sql.query['store_hands_actions'] + #handsPlayerId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handsPlayerId) REFERENCES HandsPlayers(id), + #street SMALLINT NOT NULL, + #actionNo SMALLINT NOT NULL, + #action CHAR(5) NOT NULL, + #allIn BOOLEAN NOT NULL, + #amount INT NOT NULL, + + + q = self.sql.query['store_hands_actions'] #q = q.replace('%s', self.sql.query['placeholder']) #print "DEBUG: inserts: %s" %inserts diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index 40646342..1172d1f0 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -97,10 +97,12 @@ class DerivedStats(): self.assembleHandsActions(self.hand) if DEBUG: - print "Hands:" - pp.pprint(self.hands) - print "HandsPlayers:" - pp.pprint(self.handsplayers) + #print "Hands:" + #pp.pprint(self.hands) + #print "HandsPlayers:" + #pp.pprint(self.handsplayers) + print "HandsActions:" + pp.pprint(self.handsactions) def getHands(self): return self.hands @@ -214,6 +216,8 @@ class DerivedStats(): # Squeeze, Ratchet? def assembleHandsActions(self, hand): + print "DEBUG: hand.actions" + pp.pprint(hand.actions) pass def setPositions(self, hand): diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 57eb8c35..abc812a8 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -4221,6 +4221,19 @@ class Sql: %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )""" + + self.query['store_hands_actions'] = """INSERT INTO HandsActions ( + handsPlayerId, + street, + actionNo, + action, + allIn, + amount + ) + VALUES ( + %s, %s, %s, %s, %s, + %s + )""" ################################ # Counts for DB stats window From d4400b9f48acc83b231229ee976af95256cef617 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 00:40:36 +0800 Subject: [PATCH 371/641] Stars: add part support for NL Single Draw --- pyfpdb/PokerStarsToFpdb.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index 4fbe9dfd..98abcaf0 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -83,6 +83,7 @@ class PokerStars(HandHistoryConverter): '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$' } @@ -96,7 +97,7 @@ class PokerStars(HandHistoryConverter): (?P(?P[%(LS)s\d\.]+)?\+?(?P[%(LS)s\d\.]+)?\+?(?P[%(LS)s\d\.]+)?\s?(?P%(LEGAL_ISO)s)?|Freeroll)\s+)? # close paren of tournament info (?PHORSE|8\-Game|HOSE|Mixed PLH/PLO)?\s?\(? - (?PHold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s + (?PHold\'em|Razz|RAZZ|7\sCard\sStud|7\sCard\sStud\sHi/Lo|Omaha|Omaha\sHi/Lo|Badugi|Triple\sDraw\s2\-7\sLowball|Single\sDraw\s2\-7\sLowball|5\sCard\sDraw)\s (?PNo\sLimit|Limit|LIMIT|Pot\sLimit)\)?,?\s (-\s)? (Match.*)? #TODO: waiting for reply from user as to what this means @@ -169,6 +170,7 @@ class PokerStars(HandHistoryConverter): ["ring", "stud", "fl"], ["ring", "draw", "fl"], + ["ring", "draw", "nl"], ["tour", "hold", "nl"], ["tour", "hold", "pl"], @@ -178,10 +180,6 @@ class PokerStars(HandHistoryConverter): ] def determineGameType(self, handText): -# inspect the handText and return the gametype dict -# gametype dict is: -# {'limitType': xxx, 'base': xxx, 'category': xxx} - info = {} m = self.re_GameInfo.search(handText) if not m: @@ -191,10 +189,6 @@ class PokerStars(HandHistoryConverter): raise FpdbParseError(_("Unable to recognise gametype from: '%s'") % tmp) mg = m.groupdict() -# I don't think this is doing what we think. mg will always have all -# the expected keys, but the ones that didn't match in the regex will -# have a value of None. It is OK if it throws an exception when it -# runs across an unknown game or limit or whatever. if 'LIMIT' in mg: info['limitType'] = self.limits[mg['LIMIT']] if 'GAME' in mg: From 25cbc0da3071416e4e74f29da6930325f5d0f521 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Wed, 1 Sep 2010 21:08:13 +0100 Subject: [PATCH 372/641] add logging --- pyfpdb/GuiAutoImport.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pyfpdb/GuiAutoImport.py b/pyfpdb/GuiAutoImport.py index c386f475..23d96c58 100755 --- a/pyfpdb/GuiAutoImport.py +++ b/pyfpdb/GuiAutoImport.py @@ -26,6 +26,12 @@ import gobject import os import sys import time + +import logging +# logging has been set up in fpdb.py or HUD_main.py, use their settings: +log = logging.getLogger("importer") + + import fpdb_import from optparse import OptionParser import Configuration @@ -296,6 +302,7 @@ class GuiAutoImport (threading.Thread): def addSites(self, vbox1, vbox2): the_sites = self.config.get_supported_sites() + #log.debug("addSites: the_sites="+str(the_sites)) for site in the_sites: pathHBox1 = gtk.HBox(False, 0) vbox1.pack_start(pathHBox1, False, True, 0) @@ -306,6 +313,7 @@ class GuiAutoImport (threading.Thread): paths = self.config.get_default_paths(site) self.createSiteLine(pathHBox1, pathHBox2, site, False, paths['hud-defaultPath'], params['converter'], params['enabled']) self.input_settings[site] = [paths['hud-defaultPath']] + [params['converter']] + #log.debug("addSites: input_settings="+str(self.input_settings)) if __name__== "__main__": def destroy(*args): # call back for terminating the main eventloop From e02f2e61ef51d5d24e541096959b3f3950304353 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Wed, 1 Sep 2010 21:20:22 +0100 Subject: [PATCH 373/641] make sure new variables are set --- pyfpdb/Configuration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 5701b11f..91a16cca 100755 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -680,6 +680,7 @@ class Config: sys.stderr.write(_("Configuration file %s not found. Using defaults.") % (file)) file = None + self.example_copy,example_file = True,None if file is None: (file,self.example_copy,example_file) = get_config("HUD_config.xml", True) self.file = file From 64cbfb4e4b49eefcc49b498c2c3418dc36aa9a98 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 09:12:12 +0800 Subject: [PATCH 374/641] Regression: New test file --- ...1-0.02-20100829.No.VPIP.from.posted.bb.txt | 64 ++ ....02-20100829.No.VPIP.from.posted.bb.txt.hp | 846 ++++++++++++++++++ 2 files changed, 910 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt create mode 100644 pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt.hp diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt b/pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt new file mode 100644 index 00000000..2b93f9b1 --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt @@ -0,0 +1,64 @@ +PokerStars Game #48850962136: Omaha Hi/Lo Pot Limit ($0.01/$0.02 USD) - 2010/08/29 13:22:48 PT [2010/08/29 16:22:48 ET] +Table 'Jiangxi IV' 9-max Seat #6 is the button +Seat 1: 2TONTOM ($0.94 in chips) +Seat 2: RadRandyF ($2.48 in chips) +Seat 3: 1meandog4u ($5 in chips) +Seat 4: Mr NoNo! Srb ($5.31 in chips) +Seat 5: toxic7 ($4.84 in chips) +Seat 6: jthegreat ($5.57 in chips) +Seat 7: CoinJock ($2.80 in chips) +Seat 8: ros-r-reed ($1.52 in chips) +Seat 9: skinner1947 ($1.82 in chips) +CoinJock: posts small blind $0.01 +ros-r-reed: posts big blind $0.02 +1meandog4u: posts big blind $0.02 +*** HOLE CARDS *** +Dealt to 1meandog4u [Qs Th 3c 3h] +skinner1947: folds +2TONTOM: folds +RadRandyF: calls $0.02 +1meandog4u: checks +Mr NoNo! Srb: calls $0.02 +toxic7: calls $0.02 +jthegreat: calls $0.02 +CoinJock: calls $0.01 +ros-r-reed: checks +*** FLOP *** [4d 9c Ts] +CoinJock: checks +ros-r-reed: checks +RadRandyF: checks +1meandog4u: checks +Mr NoNo! Srb: checks +toxic7: checks +jthegreat: checks +*** TURN *** [4d 9c Ts] [Kd] +CoinJock: checks +ros-r-reed: checks +RadRandyF: checks +1meandog4u: checks +Mr NoNo! Srb: checks +toxic7: bets $0.14 +jthegreat: folds +CoinJock: folds +ros-r-reed: folds +RadRandyF: folds +1meandog4u: folds +Mr NoNo! Srb: folds +Uncalled bet ($0.14) returned to toxic7 +toxic7 collected $0.14 from pot +toxic7: doesn't show hand +*** SUMMARY *** +Total pot $0.14 | Rake $0 +Board [4d 9c Ts Kd] +Seat 1: 2TONTOM folded before Flop (didn't bet) +Seat 2: RadRandyF folded on the Turn +Seat 3: 1meandog4u folded on the Turn +Seat 4: Mr NoNo! Srb folded on the Turn +Seat 5: toxic7 collected ($0.14) +Seat 6: jthegreat (button) folded on the Turn +Seat 7: CoinJock (small blind) folded on the Turn +Seat 8: ros-r-reed (big blind) folded on the Turn +Seat 9: skinner1947 folded before Flop (didn't bet) + + + diff --git a/pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt.hp b/pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt.hp new file mode 100644 index 00000000..ee7f1afd --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Stars/Flop/PLO8-9max-USD-0.01-0.02-20100829.No.VPIP.from.posted.bb.txt.hp @@ -0,0 +1,846 @@ +{ u'1meandog4u': { 'card1': 50, + 'card2': 9, + 'card3': 28, + 'card4': 2, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 3, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 3, + 'sitout': False, + 'startCards': 0, + 'startCash': 500, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'2TONTOM': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 5, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 1, + 'sitout': False, + 'startCards': 0, + 'startCash': 94, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'CoinJock': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'S', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 7, + 'sitout': False, + 'startCards': 0, + 'startCash': 280, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'Mr NoNo! Srb': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 2, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 4, + 'sitout': False, + 'startCards': 0, + 'startCash': 531, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'RadRandyF': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 4, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 2, + 'sitout': False, + 'startCards': 0, + 'startCash': 248, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'jthegreat': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 0, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 6, + 'sitout': False, + 'startCards': 0, + 'startCash': 557, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'ros-r-reed': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': True, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': True, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 'B', + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 8, + 'sitout': False, + 'startCards': 0, + 'startCash': 152, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': True, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': -2, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'skinner1947': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 6, + 'raiseFirstInChance': True, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 9, + 'sitout': False, + 'startCards': 0, + 'startCash': 182, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 0, + 'street0Raises': 0, + 'street0VPI': False, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': False, + 'street2Aggr': False, + 'street2Bets': 0, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': False, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 0, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 0, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 0.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}, + u'toxic7': { 'card1': 0, + 'card2': 0, + 'card3': 0, + 'card4': 0, + 'card5': 0, + 'card6': 0, + 'card7': 0, + 'foldBbToStealChance': False, + 'foldSbToStealChance': False, + 'foldToOtherRaisedStreet0': False, + 'foldToOtherRaisedStreet1': False, + 'foldToOtherRaisedStreet2': False, + 'foldToOtherRaisedStreet3': False, + 'foldToOtherRaisedStreet4': False, + 'foldToStreet1CBChance': False, + 'foldToStreet1CBDone': False, + 'foldToStreet2CBChance': False, + 'foldToStreet2CBDone': False, + 'foldToStreet3CBChance': False, + 'foldToStreet3CBDone': False, + 'foldToStreet4CBChance': False, + 'foldToStreet4CBDone': False, + 'foldedBbToSteal': False, + 'foldedSbToSteal': False, + 'other3BStreet0': False, + 'other4BStreet0': False, + 'otherRaisedStreet0': False, + 'otherRaisedStreet1': False, + 'otherRaisedStreet2': False, + 'otherRaisedStreet3': False, + 'otherRaisedStreet4': False, + 'position': 1, + 'raiseFirstInChance': False, + 'raisedFirstIn': False, + 'rake': 0, + 'sawShowdown': False, + 'seatNo': 5, + 'sitout': False, + 'startCards': 0, + 'startCash': 484, + 'street0Aggr': False, + 'street0Bets': 0, + 'street0Calls': 1, + 'street0Raises': 0, + 'street0VPI': True, + 'street0_3BChance': False, + 'street0_3BDone': False, + 'street0_4BChance': False, + 'street0_4BDone': False, + 'street1Aggr': False, + 'street1Bets': 0, + 'street1CBChance': False, + 'street1CBDone': False, + 'street1Calls': 0, + 'street1CheckCallRaiseChance': False, + 'street1CheckCallRaiseDone': False, + 'street1Raises': 0, + 'street1Seen': True, + 'street2Aggr': True, + 'street2Bets': 1, + 'street2CBChance': False, + 'street2CBDone': False, + 'street2Calls': 0, + 'street2CheckCallRaiseChance': False, + 'street2CheckCallRaiseDone': False, + 'street2Raises': 0, + 'street2Seen': True, + 'street3Aggr': False, + 'street3Bets': 0, + 'street3CBChance': False, + 'street3CBDone': False, + 'street3Calls': 0, + 'street3CheckCallRaiseChance': False, + 'street3CheckCallRaiseDone': False, + 'street3Raises': 0, + 'street3Seen': False, + 'street4Aggr': False, + 'street4Bets': 0, + 'street4CBChance': False, + 'street4CBDone': False, + 'street4Calls': 0, + 'street4CheckCallRaiseChance': False, + 'street4CheckCallRaiseDone': False, + 'street4Raises': 0, + 'street4Seen': False, + 'totalProfit': 12, + 'tourneyTypeId': None, + 'tourneysPlayersIds': None, + 'winnings': 14, + 'wonAtSD': 0.0, + 'wonWhenSeenStreet1': 1.0, + 'wonWhenSeenStreet2': 0.0, + 'wonWhenSeenStreet3': 0.0, + 'wonWhenSeenStreet4': 0.0}} From 72e386738338e25b709ed78006782bc8f3ca897c Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 13:42:40 +0800 Subject: [PATCH 375/641] THP: Report parse errors properly --- pyfpdb/TestHandsPlayers.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index 7be168a7..cbb3f811 100755 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -62,7 +62,8 @@ def compare(leaf, importer, errors, site): # test if there is a .hp version of the file importer.addBulkImportImportFileOrDir(filename, site=site) (stored, dups, partial, errs, ttime) = importer.runImport() - if os.path.isfile(filename + '.hp'): + + if os.path.isfile(filename + '.hp') and errs < 1: # Compare them hashfilename = filename + '.hp' @@ -90,6 +91,8 @@ def compare(leaf, importer, errors, site): else: # Stats don't match - Doh! errors.error_report(filename, hand, stat, ghash, testhash, p) + if errs > 0: + errors.error_report(filename, False, "Parse", False, False, False) importer.clearFileList() From bd6e22766209750a228f91bdc78e42019d531ffb Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 13:52:18 +0800 Subject: [PATCH 376/641] Test Config: Add OnGame to parser list --- pyfpdb/HUD_config.test.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyfpdb/HUD_config.test.xml b/pyfpdb/HUD_config.test.xml index a70d2b67..38d808c0 100644 --- a/pyfpdb/HUD_config.test.xml +++ b/pyfpdb/HUD_config.test.xml @@ -573,6 +573,7 @@ Left-Drag to Move" + From 376894bba3d9d7023a5228b4d9ec5f07b46e6fd1 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 13:52:54 +0800 Subject: [PATCH 377/641] THP: Add remaining directories for test coverage --- pyfpdb/TestHandsPlayers.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index cbb3f811..ab924637 100755 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -131,11 +131,16 @@ def main(argv=None): FTPErrors = FpdbError('Full Tilt Poker') PartyPokerErrors = FpdbError('Party Poker') BetfairErrors = FpdbError('Betfair') + OnGameErrors = FpdbError('Betfair') 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/cash/FTP/", compare, importer, FTPErrors, "Full Tilt Poker") + walk_testfiles("regression-test-files/tour/FTP/", compare, importer, FTPErrors, "Full Tilt Poker") #walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") + walk_testfiles("regression-test-files/tour/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors, "Betfair") + walk_testfiles("regression-test-files/cash/OnGame/", compare, importer, OnGameErrors, "OnGame") totalerrors = PokerStarsErrors.errorcount + FTPErrors.errorcount + PartyPokerErrors.errorcount + BetfairErrors.errorcount From 304c9e71a26f0264bfd0b588e150bc6bf6461643 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 14:02:19 +0800 Subject: [PATCH 378/641] Hand: Wrap Pot.end() section in exception handler If Hand.end() fails in that section, then something is seriously wrong with either action parsing or stack parsing. Throw a parse error in the hopes we can continue on. --- pyfpdb/Hand.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index ac8fc1f2..9f9d009d 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -1514,11 +1514,15 @@ class Pot(object): commitsall = sorted([(v,k) for (k,v) in self.committed.items() if v >0]) self.pots = [] - while len(commitsall) > 0: - commitslive = [(v,k) for (v,k) in commitsall if k in self.contenders] - v1 = commitslive[0][0] - self.pots += [sum([min(v,v1) for (v,k) in commitsall])] - commitsall = [((v-v1),k) for (v,k) in commitsall if v-v1 >0] + try: + while len(commitsall) > 0: + commitslive = [(v,k) for (v,k) in commitsall if k in self.contenders] + v1 = commitslive[0][0] + self.pots += [sum([min(v,v1) for (v,k) in commitsall])] + commitsall = [((v-v1),k) for (v,k) in commitsall if v-v1 >0] + except IndexError, e: + log.error(_("Pot.end(): Major failure while calculating pot: '%s'" % e)) + raise FpdbParseError(_("Pot.end(): Major failure while calculating pot: '%s'" % e)) # TODO: I think rake gets taken out of the pots. # so it goes: From 742dec8b158548e3538130d3fe5cb29034e541b1 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 14:04:34 +0800 Subject: [PATCH 379/641] THP: Re-enable Party cash parsing --- pyfpdb/TestHandsPlayers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py index ab924637..3c5ecfe6 100755 --- a/pyfpdb/TestHandsPlayers.py +++ b/pyfpdb/TestHandsPlayers.py @@ -137,7 +137,7 @@ def main(argv=None): walk_testfiles("regression-test-files/tour/Stars/", compare, importer, PokerStarsErrors, "PokerStars") walk_testfiles("regression-test-files/cash/FTP/", compare, importer, FTPErrors, "Full Tilt Poker") walk_testfiles("regression-test-files/tour/FTP/", compare, importer, FTPErrors, "Full Tilt Poker") - #walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") + walk_testfiles("regression-test-files/cash/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") walk_testfiles("regression-test-files/tour/PartyPoker/", compare, importer, PartyPokerErrors, "PartyPoker") walk_testfiles("regression-test-files/cash/Betfair/", compare, importer, BetfairErrors, "Betfair") walk_testfiles("regression-test-files/cash/OnGame/", compare, importer, OnGameErrors, "OnGame") From cc3197b5d1938b0cef4d7ff70e05c9fccda12009 Mon Sep 17 00:00:00 2001 From: Worros Date: Thu, 2 Sep 2010 15:24:30 +0800 Subject: [PATCH 380/641] Grapher: commit patch to allow showdown lines to be removed But only in source for the moment. Need to add a Filter for the different graph types --- pyfpdb/GuiGraphViewer.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pyfpdb/GuiGraphViewer.py b/pyfpdb/GuiGraphViewer.py index 09acb483..2b985f41 100644 --- a/pyfpdb/GuiGraphViewer.py +++ b/pyfpdb/GuiGraphViewer.py @@ -153,6 +153,11 @@ class GuiGraphViewer (threading.Thread): siteids = self.filters.getSiteIds() limits = self.filters.getLimits() games = self.filters.getGames() + graphs = { + "profit" : True, + "sawShowdown" : True, + "nonShowdown" : True + } for i in ('show', 'none'): if i in limits: @@ -230,17 +235,14 @@ class GuiGraphViewer (threading.Thread): #print "No hands returned by graph query" else: self.ax.set_title(_("Profit graph for ring games")) - #text = "Profit: $%.2f\nTotal Hands: %d" %(green[-1], len(green)) - #self.ax.annotate(text, - # xy=(10, -10), - # xycoords='axes points', - # horizontalalignment='left', verticalalignment='top', - # fontsize=10) #Draw plot - self.ax.plot(green, color='green', label=_('Hands: %d\nProfit: $%.2f') %(len(green), green[-1])) - self.ax.plot(blue, color='blue', label=_('Showdown: $%.2f') %(blue[-1])) - self.ax.plot(red, color='red', label=_('Non-showdown: $%.2f') %(red[-1])) + if graphs['profit'] == True: + self.ax.plot(green, color='green', label=_('Hands: %d\nProfit: $%.2f') %(len(green), green[-1])) + if graphs['sawShowdown'] == True: + self.ax.plot(blue, color='blue', label=_('Showdown: $%.2f') %(blue[-1])) + if graphs['nonShowdown'] == True: + self.ax.plot(red, color='red', label=_('Non-showdown: $%.2f') %(red[-1])) if sys.version[0:3] == '2.5': self.ax.legend(loc='upper left', shadow=True, prop=FontProperties(size='smaller')) else: From 3f0cdfbaa5687e7cea68e4854ceb6cb723a244a9 Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 3 Sep 2010 02:29:34 +0800 Subject: [PATCH 381/641] Regression: Add Absolute Stud Hi/Lo hand --- ...USD-0.02-0.04-200903.River.with.mucked.txt | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 pyfpdb/regression-test-files/cash/Absolute/Stud/7-StudHL-USD-0.02-0.04-200903.River.with.mucked.txt diff --git a/pyfpdb/regression-test-files/cash/Absolute/Stud/7-StudHL-USD-0.02-0.04-200903.River.with.mucked.txt b/pyfpdb/regression-test-files/cash/Absolute/Stud/7-StudHL-USD-0.02-0.04-200903.River.with.mucked.txt new file mode 100644 index 00000000..f91ed38c --- /dev/null +++ b/pyfpdb/regression-test-files/cash/Absolute/Stud/7-StudHL-USD-0.02-0.04-200903.River.with.mucked.txt @@ -0,0 +1,91 @@ +Stage #1300000000: Seven Card Hi/Lo Normal $0.02/$0.04 - 2009-03-18 19:10:00 (ET) +Seat 1 - PLAYER1 ($0.17 in chips) +Seat 2 - PLAYER2 ($0.36 in chips) +Seat 3 - PLAYER3 ($3.46 in chips) +Seat 5 - PLAYER4 ($1 in chips) +Seat 6 - PLAYER5 ($1.07 in chips) +Seat 7 - PLAYER6 ($2.31 in chips) +Seat 8 - PLAYER7 ($0.93 in chips) +Player1 - Ante $0.01 +PLAYER5 - Ante $0.01 +PLAYER6 - Ante $0.01 +PLAYER3 - Ante $0.01 +PLAYER7 - Ante $0.01 +PLAYER2 - Ante $0.01 +PLAYER4 - Ante $0.01 +*** 3rd STREET *** +Player1 - Pocket [H H Js] +PLAYER2 - Pocket [H H 7h] +PLAYER3 - Pocket [H H 6s] +PLAYER4 - Pocket [10c 5c 7s] +PLAYER5 - Pocket [H H Qh] +PLAYER6 - Pocket [H H 9c] +PLAYER7 - Pocket [H H 3s] +PLAYER7 - Bring-In $0.01 +Player1 - Calls $0.01 +PLAYER2 - Folds +PLAYER3 - Calls $0.01 +PLAYER4 - Folds +PLAYER5 - Folds +PLAYER6 - Calls $0.01 +*** 4TH STREET *** +Player1 - Pocket [H H Js 10d] +PLAYER3 - Pocket [H H 6s Ah] +PLAYER4 - Pocket [10c 5c 7s] +PLAYER6 - Pocket [H H 9c Ks] +PLAYER7 - Pocket [H H 3s Qc] +PLAYER3 - Checks +PLAYER6 - Checks +PLAYER7 - Checks +Player1 - Checks +*** 5TH STREET *** +Player1 - Pocket [H H Js 10d Kh] +PLAYER3 - Pocket [H H 6s Ah 8c] +PLAYER4 - Pocket [10c 5c 7s] +PLAYER6 - Pocket [H H 9c Ks 10s] +PLAYER7 - Pocket [H H 3s Qc 6c] +PLAYER3 - Bets $0.04 +PLAYER6 - Calls $0.04 +PLAYER7 - Calls $0.04 +Player1 - Calls $0.04 +*** 6TH STREET *** +Player1 - Pocket [H H Js 10d Kh 2c] +PLAYER3 - Pocket [H H 6s Ah 8c Jc] +PLAYER4 - Pocket [10c 5c 7s] +PLAYER6 - Pocket [H H 9c Ks 10s 8h] +PLAYER7 - Pocket [H H 3s Qc 6c Qs] +PLAYER7 - Checks +Player1 - Checks +PLAYER3 - Bets $0.04 +PLAYER6 - Calls $0.04 +PLAYER7 - Calls $0.04 +Player1 - Calls $0.04 +*** RIVER *** +Player1 - Pocket [H H Js 10d Kh 2c H] +PLAYER3 - Pocket [H H 6s Ah 8c Jc H] +PLAYER4 - Pocket [10c 5c 7s] +PLAYER6 - Pocket [H H 9c Ks 10s 8h H] +PLAYER7 - Pocket [H H 3s Qc 6c Qs H] +PLAYER7 - Checks +Player1 - Checks +PLAYER3 - Checks +PLAYER6 - Checks +*** SHOW DOWN *** +PLAYER7 - Shows [5s 8d 3s Qc 6c Qs 9s] (One pair, queens) +Player1 - Shows [Jh 3h Js 10d Kh 2c 2h] (Two Pair, jacks and twos) +PLAYER3 - Shows [3d 5d 6s Ah 8c Jc As] (One pair, aces) +PLAYER6 - Shows [Kc 10h 9c Ks 10s 8h 2s] (Two Pair, kings and tens) +PLAYER3 Collects $0.19 from main pot +PLAYER6 Collects $0.20 from main pot +*** SUMMARY *** +Total Pot($0.43) | Rake ($0.04) +Seat 1: Player1 HI:lost with Two Pair, jacks and twos [Jh 3h Js 10d Kh 2c 2h - B:Js,P:Jh,P:2h,B:2c,B:Kh] +Seat 2: PLAYER2 Folded on the 3rd STREET +Seat 3: PLAYER3 won Total ($0.19) HI:with One pair, aces [3d 5d 6s Ah 8c Jc As - P:As,B:Ah,B:Jc,B:8c,B:6s] LO:($0.19) [B:Ah,P:3d,P:5d,B:6s,B:8c] +Seat 5: PLAYER4 Folded on the 3rd STREET +Seat 6: PLAYER5 Folded on the 3rd STREET +Seat 7: PLAYER6 won Total ($0.20) HI:($0.20) with Two Pair, kings and tens [Kc 10h 9c Ks 10s 8h 2s - B:Ks,P:Kc,B:10s,P:10h,B:9c] +Seat 8: PLAYER7 HI:lost with One pair, queens [5s 8d 3s Qc 6c Qs 9s - B:Qs,B:Qc,P:9s,P:8d,B:6c] + + + From d5f230e4e8ad896f0bc36000dbf06327cb726b5c Mon Sep 17 00:00:00 2001 From: Worros Date: Fri, 3 Sep 2010 11:49:41 +0800 Subject: [PATCH 382/641] Absolute: a couple of cleanups and some prep work for AP I've changed re_GameInfo to be a verbose regex, so I may have broken working hand histories. No test files at the moment so it is hard to tell. --- pyfpdb/AbsoluteToFpdb.py | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/pyfpdb/AbsoluteToFpdb.py b/pyfpdb/AbsoluteToFpdb.py index 7cef8c68..145a0971 100755 --- a/pyfpdb/AbsoluteToFpdb.py +++ b/pyfpdb/AbsoluteToFpdb.py @@ -23,6 +23,18 @@ import sys import logging from HandHistoryConverter import * +import locale +lang=locale.getdefaultlocale()[0][0:2] +if lang=="en": + def _(string): return string +else: + import gettext + try: + trans = gettext.translation("fpdb", localedir="locale", languages=[lang]) + trans.install() + except IOError: + def _(string): return string + # Class for converting Absolute HH format. class Absolute(HandHistoryConverter): @@ -42,7 +54,13 @@ class Absolute(HandHistoryConverter): #Seat 6 - FETS63 ($0.75 in chips) #Board [10s 5d Kh Qh 8c] - re_GameInfo = re.compile(ur"^Stage #(C?[0-9]+): (?PHoldem|HORSE)(?: \(1 on 1\)|)? ?(?PNo Limit|Pot Limit|Normal|)? ?(?P\$| €|)(?P[.0-9]+)/?(?:\$| €|)(?P[.0-9]+)?", re.MULTILINE) + re_GameInfo = re.compile(ur"""^Stage #(C?[0-9]+):\s+ + (?PHoldem|Seven\sCard\sHi\/L|HORSE) + (?:\s\(1\son\s1\)|)?\s+? + (?PNo Limit|Pot\sLimit|Normal|)?\s? + (?P\$|\s€|) + (?P[.0-9]+)/?(?:\$|\s€|)(?P[.0-9]+)? + """, re.MULTILINE|re.VERBOSE) re_HorseGameInfo = re.compile(ur"^Game Type: (?PLimit) (?PHoldem)", re.MULTILINE) # TODO: can set max seats via (1 on 1) to a known 2 .. re_HandInfo = re.compile(ur"^Stage #C?(?P[0-9]+): .*(?P\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d).*\n(Table: (?P
.*) \(Real Money\))?", re.MULTILINE) @@ -50,12 +68,6 @@ class Absolute(HandHistoryConverter): re_Button = re.compile(ur"Seat #(?P
.+$)", re.MULTILINE) -# re_Button = re.compile(ur"^Seat (?P
[ a-zA-Z0-9]+) \d-max \(Real Money\)\nSeat (?P