diff --git a/packaging/debian/changelog b/packaging/debian/changelog index 49211161..c09713a3 100644 --- a/packaging/debian/changelog +++ b/packaging/debian/changelog @@ -1,3 +1,16 @@ +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 + * Hungarian translation + + -- Mika Bostrom Wed, 25 Aug 2010 10:05:36 +0300 + free-poker-tools (0.20.904-2) unstable; urgency=low * On fpdb start, copy example HUD_config.xml in place if none is present 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 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 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_stable.ebuild b/packaging/gentoo/current_stable.ebuild index edc70791..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.5 +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 9741f2b8..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.5 +inherit eutils games DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" @@ -18,7 +15,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 ) @@ -36,29 +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 - 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 || die "failed to create hungarian mo file" 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 + 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/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..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.5 +inherit eutils games git DESCRIPTION="A free/open source tracker/HUD for use with online poker" HOMEPAGE="http://fpdb.wiki.sourceforge.net/" @@ -17,9 +13,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,14 +39,16 @@ src_install() { 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 + if use linguas_de; then + msgfmt pyfpdb/locale/fpdb-de_DE.po -o pyfpdb/locale/de.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 + if use linguas_hu; then + msgfmt pyfpdb/locale/fpdb-hu_HU.po -o pyfpdb/locale/hu.mo fi + domo pyfpdb/locale/*.mo + doins readme.txt exeinto "${GAMES_DATADIR}"/${PN} @@ -63,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 } 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", diff --git a/pyfpdb/BetfairToFpdb.py b/pyfpdb/BetfairToFpdb.py index 07ee2612..ab870a27 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 \*\*)|.+)" @@ -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")) 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") diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index 8c5b4650..5701b11f 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: diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index f8119404..88678136 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1766,6 +1766,38 @@ class Database: c = self.get_cursor() c.executemany(q, inserts) + def storeHandsActions(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'], + + #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 + #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 d79d49bf..1172d1f0 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): @@ -92,12 +93,16 @@ class DerivedStats(): self.assembleHands(self.hand) self.assembleHandsPlayers(self.hand) + if DEBUG: + 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 @@ -105,6 +110,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 @@ -207,6 +215,10 @@ class DerivedStats(): # 3betSB, 3betBB # Squeeze, Ratchet? + def assembleHandsActions(self, hand): + print "DEBUG: hand.actions" + pp.pprint(hand.actions) + pass def setPositions(self, hand): """Sets the position for each player in HandsPlayers diff --git a/pyfpdb/EverleafToFpdb.py b/pyfpdb/EverleafToFpdb.py index 8bff1cdd..1b27c555 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): @@ -281,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')) @@ -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", 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/FulltiltToFpdb.py b/pyfpdb/FulltiltToFpdb.py index 4b5fbcfd..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,10 +218,9 @@ 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) - # Should this throw an exception? - CG - return None + raise FpdbParseError("No match in readHandInfo.") hand.handid = m.group('HID') hand.tablename = m.group('TABLE') @@ -337,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'))) @@ -347,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')) @@ -407,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): @@ -483,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 @@ -541,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: @@ -572,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: @@ -684,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) @@ -693,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", diff --git a/pyfpdb/GuiAutoImport.py b/pyfpdb/GuiAutoImport.py index 23d96c58..2f595fed 100755 --- a/pyfpdb/GuiAutoImport.py +++ b/pyfpdb/GuiAutoImport.py @@ -119,7 +119,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) @@ -138,7 +138,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() @@ -151,7 +151,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) @@ -185,9 +185,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 @@ -212,7 +212,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 @@ -252,19 +252,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/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..d6eaf14f 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: @@ -401,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 ) @@ -410,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 @@ -419,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 @@ -487,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: @@ -501,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() ] @@ -520,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') @@ -539,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 @@ -571,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 @@ -588,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): 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): diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index b56002c3..ac8fc1f2 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -274,6 +274,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 diff --git a/pyfpdb/Hud.py b/pyfpdb/Hud.py index c394108c..8454f433 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 @@ -587,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: @@ -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() diff --git a/pyfpdb/PartyPokerToFpdb.py b/pyfpdb/PartyPokerToFpdb.py index 2dab4569..f61b5b7b 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 len(TableName[1]) > 6: + return "#%s" % (table_number) + else: + return "%s.+Table\s#%s" % (TableName[0], table_number) else: print 'party', 'getTableTitleRe', table_number return table_name 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: 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 diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index ffb1e47e..a9dd137f 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -78,45 +78,49 @@ log = logging.getLogger("db") re_Places = re.compile("_[0-9]$") -re_Percent = re.compile("%$") # String manipulation 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'): - match = re_Places.search(stat) - 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 = (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 +def do_stat(stat_dict, player = 24, stat = 'vpip'): + statname = stat + match = re_Places.search(stat) + 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 + # 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: + places = int(stat[-1:]) + result = __stat_override(places, result) 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 +151,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), + 'NA', + 'v=NA', + 'vpip=NA', + '(0/0)', _('Voluntarily Put In Pot Pre-Flop%') ) @@ -167,18 +171,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), + 'NA', + 'p=NA', + 'pfr=NA', + '(0/0)', _('Pre-Flop Raise %') ) @@ -188,18 +192,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), + 'NA', + 'w=NA', + 'wtsd=NA', + '(0/0)', _('% went to showdown') ) @@ -209,40 +213,42 @@ 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), + 'NA', + 'w=NA', + 'wmsd=NA', + '(0/0)', _('% 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') ) 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') ) @@ -252,19 +258,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), + 'NA', + 'bb100=NA', + 'bb100=NA', + '(--)', _('big blinds/100 hands') ) @@ -274,19 +280,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), + 'NA', + 'BB100=NA', + 'BB100=NA', + '(--)', _('Big Bets/100 hands') ) @@ -297,21 +303,19 @@ 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: 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 +342,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), @@ -352,18 +357,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), + 'NA', + 'ff=NA', + 'fold_f=NA', + '(0/0)', _('folded flop/4th') ) @@ -373,10 +378,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 +393,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 +412,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 +434,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 +453,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), + 'NA', + '3B=NA', + '3B_pf=NA', + '(0/0)', _('% 3/4 Bet preflop/3rd')) def WMsF(stat_dict, player): @@ -467,17 +472,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), + 'NA', + 'wf=NA', + 'w_w_f=NA', + '(0/0)', _('% won$/saw flop/4th')) def a_freq1(stat_dict, player): @@ -486,17 +491,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), + 'NA', + 'a1=NA', + 'a_fq_1=NA', + '(0/0)', _('Aggression Freq flop/4th')) def a_freq2(stat_dict, player): @@ -505,17 +510,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), + 'NA', + 'a2=NA', + 'a_fq_2=NA', + '(0/0)', _('Aggression Freq turn/5th')) def a_freq3(stat_dict, player): @@ -524,17 +529,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), + 'NA', + 'a3=NA', + 'a_fq_3=NA', + '(0/0)', _('Aggression Freq river/6th')) def a_freq4(stat_dict, player): @@ -543,17 +548,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), + 'NA', + 'a4=NA', + 'a_fq_4=NA', + '(0/0)', _('Aggression Freq 7th')) def a_freq_123(stat_dict, player): @@ -563,9 +568,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 +581,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): @@ -597,17 +602,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), + 'NA', + 'af=NA', + 'agg_f=NA', + '(0/0)', _('Aggression Freq')) def agg_fact(stat_dict, player): @@ -630,10 +635,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): @@ -647,17 +652,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), + 'NA', + 'cbet=NA', + 'cbet=NA', + '(0/0)', _('% continuation bet ')) def cb1(stat_dict, player): @@ -666,17 +671,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), + 'NA', + 'cb1=NA', + 'cb_1=NA', + '(0/0)', _('% continuation bet flop/4th')) def cb2(stat_dict, player): @@ -685,17 +690,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), + 'NA', + 'cb2=NA', + 'cb_2=NA', + '(0/0)', _('% continuation bet turn/5th')) def cb3(stat_dict, player): @@ -704,17 +709,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), + 'NA', + 'cb3=NA', + 'cb_3=NA', + '(0/0)', _('% continuation bet river/6th')) def cb4(stat_dict, player): @@ -723,17 +728,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), + 'NA', + 'cb4=NA', + 'cb_4=NA', + '(0/0)', _('% continuation bet 7th')) def ffreq1(stat_dict, player): @@ -742,10 +747,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 +766,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), + 'NA', + 'ff2=NA', + 'ff_2=NA', + '(0/0)', _('% fold frequency turn/5th')) def ffreq3(stat_dict, player): @@ -780,17 +785,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), + 'NA', + 'ff3=NA', + 'ff_3=NA', + '(0/0)', _('% fold frequency river/6th')) def ffreq4(stat_dict, player): @@ -799,24 +804,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), + 'NA', + 'ff4=NA', + 'ff_4=NA', + '(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) ] 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() diff --git a/pyfpdb/TestHandsPlayers.py b/pyfpdb/TestHandsPlayers.py old mode 100644 new mode 100755 index 5da4d672..7be168a7 --- 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 @@ -12,7 +31,8 @@ import fpdb_import class FpdbError: - def __init__(self): + def __init__(self, sitename): + self.site = sitename self.errorcount = 0 self.histogram = {} @@ -28,18 +48,19 @@ 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:]) -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 @@ -74,15 +95,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: @@ -103,14 +124,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, "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 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()) 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", 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", diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw index b067073a..385d07ef 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() @@ -129,7 +129,7 @@ import Configuration import Exceptions import Stats -VERSION = "0.20.906" +VERSION = "0.20.906 plus git" class fpdb: @@ -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() @@ -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.\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) @@ -755,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 = """ @@ -876,8 +859,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 +888,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 +948,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 +1116,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 @@ -1240,7 +1222,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() diff --git a/pyfpdb/fpdb_import.py b/pyfpdb/fpdb_import.py index 5fcbd1b0..a0f7373a 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) 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 d26c853a..00000000 --- a/pyfpdb/locale/create-po-file.sh +++ /dev/null @@ -1,3 +0,0 @@ -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* - diff --git a/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo index 291c02d0..b41b0c93 100644 Binary files a/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo and b/pyfpdb/locale/de/LC_MESSAGES/fpdb.mo differ diff --git a/pyfpdb/locale/fpdb-de_DE.po b/pyfpdb/locale/fpdb-de_DE.po index 9d7032b7..47bacde7 100644 --- a/pyfpdb/locale/fpdb-de_DE.po +++ b/pyfpdb/locale/fpdb-de_DE.po @@ -1,11 +1,10 @@ -# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANIZATION # Steffen Schaumburg , 2010. 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-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" @@ -16,9 +15,50 @@ 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 "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 "Lese Antes" + +#: AbsoluteToFpdb.py:236 EverleafToFpdb.py:229 +msgid "No bringin found." +msgstr "Kein Bringin gefunden." + +#: AbsoluteToFpdb.py:243 EverleafToFpdb.py:236 +msgid "No small blind" +msgstr "Keine Small Blind" + +#: 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 "" +msgstr "Konnte Datei %s nicht finden" #: Anonymise.py:61 msgid "Output being written to" @@ -28,134 +68,130 @@ 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 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 -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 "" +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" +#: 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 +485,277 @@ msgstr "" msgid "get_stats took: %4.3f seconds" msgstr "" -#: Database.py:2373 Tables.py:448 +#: Database.py:2373 msgid "press enter to continue" msgstr "" +#: EverleafToFpdb.py:264 +msgid "Everleaf readStudPlayerCards is only a stub." +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 "Wählen Sie ein Datum" + +#: Filters.py:946 fpdb.pyw:729 +msgid "Done" +msgstr "Fertig" + +#: FulltiltToFpdb.py:361 +msgid "Player bringing in: %s for %s" msgstr "" -#: Filters.py:946 fpdb.pyw:728 -msgid "Done" +#: 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 "" +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 +766,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,111 +915,212 @@ 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:458 GuiImapFetcher.py:119 +msgid "Username" +msgstr "Benutzername" + +#: GuiDatabase.py:129 GuiDatabase.py:465 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 %s, %s, %s, %s, %s failed: %s" msgstr "" -#: GuiDatabase.py:304 -msgid "" -"Postgres client reports: Unable to connect - Please check that the Postgres " -"service has been started" +#: 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:321 -msgid "finished." +#: GuiDatabase.py:443 +msgid "DB Name" msgstr "" -#: GuiDatabase.py:331 -msgid "loaddbs error: " +#: GuiDatabase.py:451 +msgid "DB Description" msgstr "" -#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 -msgid "***sortCols error: " +#: GuiDatabase.py:472 +msgid "Host Computer" msgstr "" -#: GuiDatabase.py:354 -msgid "sortCols error: " +#: GuiDatabase.py:505 +msgid "start creating new db" msgstr "" -#: GuiDatabase.py:424 GuiLogView.py:213 +#: GuiDatabase.py:524 +msgid "tested new db, result=%s" +msgstr "" + +#: GuiDatabase.py:527 +msgid "Database created" +msgstr "Datenbank erstellt" + +#: GuiDatabase.py:530 +msgid "Database creation failed" +msgstr "Datenbankerstellung fehlgeschlagen" + +#: GuiDatabase.py:543 +msgid "check_fields: starting" +msgstr "" + +#: GuiDatabase.py:549 +msgid "No Database Name given" +msgstr "Kein Datenbankname eingegeben" + +#: GuiDatabase.py:552 +msgid "No Database Description given" +msgstr "Keine Datenbankbeschreibung eingegeben" + +#: GuiDatabase.py:555 +msgid "No Username given" +msgstr "Kein Benutzername eingegeben" + +#: GuiDatabase.py:558 +msgid "No Password given" +msgstr "Kein Passwort eingegeben" + +#: GuiDatabase.py:561 +msgid "No Host given" +msgstr "Kein Host eingegeben" + +#: 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: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:429 GuiLogView.py:218 +#: GuiDatabase.py:706 GuiLogView.py:218 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." @@ -1047,13 +1254,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 +1385,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 +1453,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 +1927,127 @@ 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 -msgid "" -"------------------------------------------------------------\n" -"Creating hud from hand %s\n" +#: Hud.py:589 +msgid "Creating hud from hand " 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,37 +2060,34 @@ 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 +#: UltimateBetToFpdb.py:144 Win2dayToFpdb.py:156 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" +#: OnGameToFpdb.py:288 +msgid "readBlinds in noSB exception - no SB created" msgstr "" #: Options.py:40 @@ -1975,187 +2171,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 "" @@ -2402,6 +2578,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 "" @@ -2412,17 +2592,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 +2613,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,400 +2719,393 @@ 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 "" -"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.\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 "" +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 "" +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 "" +msgstr " Der HUD-Cache wird neu erstellt ... " -#: fpdb.pyw:623 +#: fpdb.pyw:624 msgid "User cancelled rebuilding hud cache" -msgstr "" - -#: fpdb.pyw:635 -msgid "Confirm rebuilding database indexes" -msgstr "" +msgstr "Benutzer hat Neuerstellung des HUD-Cache abgebrochen" #: fpdb.pyw:636 +msgid "Confirm rebuilding database indexes" +msgstr "Bestätigung der Neuerstellung der Datenbankindexe" + +#: 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 "" +msgstr " Datenbankindexe werden neu erstellt ... " -#: fpdb.pyw:651 +#: fpdb.pyw:652 msgid " Cleaning Database ... " -msgstr "" +msgstr " Reinige Datenbank ... " -#: fpdb.pyw:656 +#: fpdb.pyw:657 msgid " Analyzing Database ... " -msgstr "" +msgstr " Analysiere Datenbank ... " -#: fpdb.pyw:661 +#: fpdb.pyw:662 msgid "User cancelled rebuilding db indexes" -msgstr "" +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 "" - -#: 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 -#, fuzzy +#: 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 "" +msgstr "A" -#: fpdb.pyw:834 +#: fpdb.pyw:817 msgid "_Auto Import and HUD" -msgstr "" +msgstr "_Autoimport und HUD" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "H" -msgstr "" +msgstr "H" -#: fpdb.pyw:835 +#: fpdb.pyw:818 msgid "_HUD Configurator" -msgstr "" +msgstr "_HUD-Konfigurator" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "G" -msgstr "" +msgstr "G" -#: fpdb.pyw:836 +#: fpdb.pyw:819 msgid "_Graphs" -msgstr "" +msgstr "_Graphen" -#: fpdb.pyw:837 +#: fpdb.pyw:820 msgid "P" -msgstr "" +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 "" +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 "" +msgstr "Tourney-_Betrachter" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "O" -msgstr "" +msgstr "O" -#: fpdb.pyw:840 +#: fpdb.pyw:823 msgid "P_ositional Stats (tabulated view, not on sqlite)" -msgstr "" +msgstr "Statistiken nach Position (Tabelle, nicht auf sqlite)" -#: fpdb.pyw:841 fpdb.pyw:1057 +#: fpdb.pyw:824 fpdb.pyw:1039 msgid "Session Stats" -msgstr "" +msgstr "Statistiken nach Sitzung" -#: fpdb.pyw:842 +#: fpdb.pyw:825 msgid "_Database" -msgstr "" +msgstr "_Datenbank" -#: fpdb.pyw:843 +#: fpdb.pyw:826 msgid "_Maintain Databases" -msgstr "" +msgstr "Datenbanken _Verwalten" -#: fpdb.pyw:844 +#: fpdb.pyw:827 msgid "Create or Recreate _Tables" -msgstr "" +msgstr "_Tabellen erstellen oder neu erstellen" -#: fpdb.pyw:845 +#: fpdb.pyw:828 msgid "Rebuild HUD Cache" -msgstr "" +msgstr "HUD-Cache neu erstellen" -#: fpdb.pyw:846 +#: fpdb.pyw:829 msgid "Rebuild DB Indexes" -msgstr "" +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 "" +msgstr "Datenbank in eine Textdatei schreiben (dauert SEHR lange)" -#: fpdb.pyw:849 +#: fpdb.pyw:832 msgid "_Help" -msgstr "" +msgstr "_Hilfe" -#: fpdb.pyw:850 +#: fpdb.pyw:833 msgid "_Log Messages" -msgstr "" +msgstr "_Log-Dateien" -#: fpdb.pyw:851 +#: fpdb.pyw:834 msgid "A_bout, License, Copying" -msgstr "" +msgstr "_Über, Lizenz, Kopieren" -#: fpdb.pyw:869 +#: fpdb.pyw:852 msgid "There is an error in your config file\n" -msgstr "" +msgstr "Fehler in Ihrer Konfigurationsdatei\n" -#: fpdb.pyw:870 +#: fpdb.pyw:853 msgid "" "\n" "\n" "Error is: " msgstr "" +"\n" +"\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 " @@ -2941,38 +3134,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." @@ -2980,15 +3202,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 "" @@ -2997,44 +3219,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" @@ -3100,3 +3323,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.po b/pyfpdb/locale/fpdb-en_GB.pot similarity index 79% rename from pyfpdb/locale/fpdb-en_GB.po rename to pyfpdb/locale/fpdb-en_GB.pot index 350b9f5a..89cd55e6 100644 --- a/pyfpdb/locale/fpdb-en_GB.po +++ b/pyfpdb/locale/fpdb-en_GB.pot @@ -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-30 01:30+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,30 +68,18 @@ 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 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 -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 "" @@ -65,98 +94,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,10 +482,14 @@ msgstr "" msgid "get_stats took: %4.3f seconds" msgstr "" -#: Database.py:2373 Tables.py:448 +#: Database.py:2373 msgid "press enter to continue" msgstr "" +#: EverleafToFpdb.py:264 +msgid "Everleaf readStudPlayerCards is only a stub." +msgstr "" + #: Filters.py:62 msgid "All" msgstr "" @@ -502,7 +539,7 @@ msgid "Grouping:" msgstr "" #: Filters.py:66 -msgid "Show Position Stats:" +msgid "Show Position Stats" msgstr "" #: Filters.py:67 TourneyFilters.py:60 @@ -577,32 +614,84 @@ 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 "" +#: 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 "" #: 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 +699,7 @@ msgid " _Auto Import Running " msgstr "" #: GuiAutoImport.py:182 -msgid " Stop _Autoimport " +msgid " Stop _Auto Import " msgstr "" #: GuiAutoImport.py:207 @@ -620,7 +709,7 @@ msgid "" msgstr "" #: GuiAutoImport.py:209 -msgid " _Stop Autoimport " +msgid " _Stop Auto Import " msgstr "" #: GuiAutoImport.py:225 @@ -636,19 +725,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 +767,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 +818,7 @@ msgstr "" msgid "Drop HudCache:" msgstr "" -#: GuiBulkImport.py:297 fpdb.pyw:831 +#: GuiBulkImport.py:297 fpdb.pyw:814 msgid "_Bulk Import" msgstr "" @@ -801,105 +890,205 @@ 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:458 GuiImapFetcher.py:119 msgid "Username" msgstr "" -#: GuiDatabase.py:115 GuiImapFetcher.py:119 +#: GuiDatabase.py:129 GuiDatabase.py:465 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 %s, %s, %s, %s, %s failed: %s" +msgstr "" + +#: GuiDatabase.py:414 +msgid "AddDB starting" +msgstr "" + +#: GuiDatabase.py:423 +msgid "Add New Database" +msgstr "" + +#: GuiDatabase.py:433 +msgid "DB Type" +msgstr "" + +#: GuiDatabase.py:443 +msgid "DB Name" +msgstr "" + +#: GuiDatabase.py:451 +msgid "DB Description" +msgstr "" + +#: GuiDatabase.py:472 +msgid "Host Computer" +msgstr "" + +#: 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:530 +msgid "Database creation failed" +msgstr "" + +#: GuiDatabase.py:543 +msgid "check_fields: starting" +msgstr "" + +#: GuiDatabase.py:549 +msgid "No Database Name given" +msgstr "" + +#: GuiDatabase.py:552 +msgid "No Database Description given" +msgstr "" + +#: GuiDatabase.py:555 +msgid "No Username given" +msgstr "" + +#: GuiDatabase.py:558 +msgid "No Password given" +msgstr "" + +#: GuiDatabase.py:561 +msgid "No Host given" +msgstr "" + +#: 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: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:429 GuiLogView.py:218 +#: GuiDatabase.py:706 GuiLogView.py:218 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." @@ -1030,6 +1219,10 @@ msgstr "" msgid "Log Messages" msgstr "" +#: GuiLogView.py:96 +msgid "Refresh" +msgstr "" + #: GuiPositionalStats.py:146 msgid "DEBUG: activesite set to %s" msgstr "" @@ -1154,7 +1347,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 +1419,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 +1886,126 @@ 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 -msgid "" -"------------------------------------------------------------\n" -"Creating hud from hand %s\n" +#: Hud.py:589 +msgid "Creating hud from hand " 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,37 +2018,34 @@ 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 +#: UltimateBetToFpdb.py:144 Win2dayToFpdb.py:156 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" +#: OnGameToFpdb.py:288 +msgid "readBlinds in noSB exception - no SB created" msgstr "" #: Options.py:40 @@ -1950,186 +2128,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 "" @@ -2378,6 +2536,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 "" @@ -2394,7 +2556,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 +2568,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 +2668,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 @@ -2514,356 +2676,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.\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 +3017,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 +3067,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 +3099,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 651006ea..edd2a8f5 100644 --- a/pyfpdb/locale/fpdb-hu_HU.po +++ b/pyfpdb/locale/fpdb-hu_HU.po @@ -5,8 +5,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-28 12:32+0200\n" +"POT-Creation-Date: 2010-08-30 01:30+CEST\n" +"PO-Revision-Date: 2010-08-30 01:33+0200\n" "Last-Translator: Ferenc Erki \n" "Language-Team: Hungarian \n" "Language: hu\n" @@ -16,6 +16,47 @@ 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 +msgid "No bringin found." +msgstr "Nyitó hívás nem található." + +#: AbsoluteToFpdb.py:243 EverleafToFpdb.py:236 +msgid "No small blind" +msgstr "Nincs kisvak" + +#: AbsoluteToFpdb.py:270 +msgid "Absolute readStudPlayerCards is only a stub." +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 +#: 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,30 +69,18 @@ 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 "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: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 -msgid "parse input hand history" -msgstr "leosztástörténet feldolgozása" - -#: BetfairToFpdb.py:230 PartyPokerToFpdb.py:523 PokerStarsToFpdb.py:468 -msgid "output translation to" -msgstr "feldolgozás eredményének helye" - -#: BetfairToFpdb.py:231 PartyPokerToFpdb.py:524 PokerStarsToFpdb.py:469 -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)" @@ -64,11 +93,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 +107,29 @@ msgstr "" " itt: %s\n" " vagy itt: %s\n" -#: 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:135 Configuration.py:136 +msgid "Error copying .example config file, cannot fall back. Exiting.\n" +msgstr "" +"Hiba a .example konfigurációs 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 +137,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 +197,14 @@ 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 +msgid "Error parsing example file %s. See error log file." +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." msgstr "SQLAlchemy connection pool használatának kihagyása." @@ -474,10 +509,14 @@ 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" +#: EverleafToFpdb.py:264 +msgid "Everleaf readStudPlayerCards is only a stub." +msgstr "Az Everleaf terem readStudPlayerCards funkciója csak egy csonk." + #: Filters.py:62 msgid "All" msgstr "Mind" @@ -527,8 +566,8 @@ msgid "Grouping:" msgstr "Csoportosítás:" #: Filters.py:66 -msgid "Show Position Stats:" -msgstr "Pozíció" +msgid "Show Position Stats" +msgstr "Pozíciók" #: Filters.py:67 TourneyFilters.py:60 msgid "Date:" @@ -602,41 +641,97 @@ 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 "Ettől:" + +#: Filters.py:908 +msgid "To:" +msgstr "Eddig:" + #: 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" +#: FulltiltToFpdb.py:361 +msgid "Player bringing in: %s for %s" +msgstr "Nyitó hívás: %s hív %s-t" + +#: FulltiltToFpdb.py:364 +msgid "No bringin found, handid =%s" +msgstr "Nyitó hívás nem található, leosztásazonosító = %s" + +#: FulltiltToFpdb.py:421 +msgid "FullTilt: DEBUG: unimplemented readAction: '%s' '%s'" +msgstr "FullTilt: DEBUG: nem ismert readAction: '%s' '%s'" + +#: FulltiltToFpdb.py:497 +msgid "determineTourneyType : Parsing NOK" +msgstr "determineTourneyType : értelmezés nem OK" + +#: FulltiltToFpdb.py:555 +msgid "Unable to get a valid Tournament ID -- File rejected" +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 "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 "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 "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 -msgid " Start _Autoimport " -msgstr " _AutoImport indítása " +msgid " Start _Auto Import " +msgstr " _Auto Import indítása " #: GuiAutoImport.py:135 -msgid "AutoImport Ready." -msgstr "AutoImport kész." +msgid "Auto Import Ready." +msgstr "Auto Import kész." #: GuiAutoImport.py:148 -msgid "Please choose the path that you want to auto import" -msgstr "Válaszd ki a könyvtárat az AutoImporthoz" +msgid "Please choose the path that you want to Auto Import" +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 -msgid " Stop _Autoimport " -msgstr " _AutoImport leállítása " +msgid " Stop _Auto Import " +msgstr " _Auto Import leállítása " #: GuiAutoImport.py:207 msgid "" @@ -644,11 +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 -msgid " _Stop Autoimport " -msgstr " _AutoImport leállítása " +msgid " _Stop Auto Import " +msgstr " _Auto Import leállítása " #: GuiAutoImport.py:225 msgid "opening pipe to HUD" @@ -665,26 +760,26 @@ msgstr "" #: GuiAutoImport.py:249 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" +"Auto Import megszakítva - nem elérhető a globális zárolás" #: GuiAutoImport.py:254 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." +"Auto Import leállítása - globális zárolás feloldva." #: GuiAutoImport.py:256 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" +" * Auto Import megállítása: A HUD már nem fut" #: GuiAutoImport.py:283 msgid "Browse..." @@ -721,7 +816,7 @@ msgid "Import Complete" msgstr "Importálás kész" #: GuiBulkImport.py:139 -msgid "bulk-import aborted - global lock not available" +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 +867,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" @@ -857,113 +952,207 @@ msgstr "" "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" -msgstr "Frissítés" +#: GuiDatabase.py:117 +msgid "_Add" +msgstr "Hozzá_adás" -#: GuiDatabase.py:111 +#: GuiDatabase.py:121 +msgid "_Refresh" +msgstr "F_rissítés" + +#: 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:458 GuiImapFetcher.py:119 msgid "Username" msgstr "Felhasználónév" -#: GuiDatabase.py:115 GuiImapFetcher.py:119 +#: GuiDatabase.py:129 GuiDatabase.py:465 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 "Megnyitva" -#: 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" -msgstr "loaddbs: kapcolódási próbálkozás: %s/%s, %s, %s/%s" +#: GuiDatabase.py:293 +msgid "finished." +msgstr "befejezve." -#: GuiDatabase.py:284 +#: GuiDatabase.py:303 +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 +msgid "testDB: trying to connect to: %s/%s, %s, %s/%s" +msgstr "testDB: kapcsolódási kísérlet: %s/%s, %s, %s/%s" + +#: 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 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 " +"PostgreSQL szerver jelenti: A hozzáférés megtagadva. Megfelelőek a " "jogosultságaid?" -#: GuiDatabase.py:304 -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" +#: GuiDatabase.py:395 fpdb.pyw:893 +msgid "PostgreSQL client reports: Unable to connect - " +msgstr "PostgreSQL kliens jelenti: Nem sikerült a kapcsolódás - " -#: GuiDatabase.py:321 -msgid "finished." -msgstr "befejezve." +#: GuiDatabase.py:396 fpdb.pyw:894 +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:331 -msgid "loaddbs error: " -msgstr "loaddbs hiba: " +#: GuiDatabase.py:406 +msgid "db connection to %s, %s, %s, %s, %s failed: %s" +msgstr "adatbázis kapcsolódás sikertelen: %s, %s, %s, %s, %s hibaüzenet: %s" -#: GuiDatabase.py:352 GuiLogView.py:200 GuiTourneyPlayerStats.py:466 -msgid "***sortCols error: " -msgstr "***sortCols hiba: " +#: GuiDatabase.py:414 +msgid "AddDB starting" +msgstr "AddDB indítása" -#: GuiDatabase.py:354 -msgid "sortCols error: " -msgstr "sortCols hiba: " +#: GuiDatabase.py:423 +msgid "Add New Database" +msgstr "Új adatbázis hozzáadása" -#: GuiDatabase.py:424 GuiLogView.py:213 +#: GuiDatabase.py:433 +msgid "DB Type" +msgstr "Adatbázis típus" + +#: GuiDatabase.py:443 +msgid "DB Name" +msgstr "Adatbázis név" + +#: GuiDatabase.py:451 +msgid "DB Description" +msgstr "Adatbázis leírás" + +#: GuiDatabase.py:472 +msgid "Host Computer" +msgstr "Kiszolgáló" + +#: GuiDatabase.py:505 +msgid "start creating new db" +msgstr "új adatbázis létrehozásának indítása" + +#: GuiDatabase.py:524 +msgid "tested new db, result=%s" +msgstr "új adatbázis tesztelve, eredmény=%s" + +#: GuiDatabase.py:527 +msgid "Database created" +msgstr "Adatbázis létrehozva" + +#: GuiDatabase.py:530 +msgid "Database creation failed" +msgstr "Adatbázis létrehozása nem sikerült" + +#: GuiDatabase.py:543 +msgid "check_fields: starting" +msgstr "check_fields: indítás" + +#: GuiDatabase.py:549 +msgid "No Database Name given" +msgstr "Nem lett adatbázis név megadva" + +#: GuiDatabase.py:552 +msgid "No Database Description given" +msgstr "Nem lett adatbázis leírás megadva" + +#: GuiDatabase.py:555 +msgid "No Username given" +msgstr "Nem lett felhasználónév megadva" + +#: GuiDatabase.py:558 +msgid "No Password given" +msgstr "Nem lett jelszó megadva" + +#: GuiDatabase.py:561 +msgid "No Host given" +msgstr "Nem lett kiszolgáló megadva" + +#: GuiDatabase.py:575 +msgid "Unknown Database Type selected" +msgstr "Ismeretlen adatbázis típus lett kiválasztva" + +#: GuiDatabase.py:579 +msgid "check_fields: open dialog" +msgstr "check_fields: párbeszéd nyitása" + +#: GuiDatabase.py:588 +msgid "Do you want to try again?" +msgstr "Meg akarod próbálni újból?" + +#: GuiDatabase.py:595 +msgid "check_fields: destroy dialog" +msgstr "check_fields: párbeszéd lezárása" + +#: GuiDatabase.py:599 +msgid "check_fields: returning ok as %s, try_again as %s" +msgstr "check_fields: OK visszaadása, mint %s, újrapróbálás, mint %s" + +#: GuiDatabase.py:701 GuiLogView.py:213 msgid "Test Log Viewer" msgstr "Napló böngésző (teszt)" -#: GuiDatabase.py:429 GuiLogView.py:218 +#: GuiDatabase.py:706 GuiLogView.py:218 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 +1160,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." @@ -1115,6 +1304,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 +1441,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" @@ -1320,260 +1513,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" -msgstr "markStreets nem egyezik - Leosztás érvénytelenítését feltételezem" +#: Hand.py:318 +msgid "markstreets didn't match - Assuming hand %s was cancelled" +msgstr "" +"markstreets nem egyezik - A(z) %s 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 +1775,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 +1794,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" +msgstr "Nyitó hívás: %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 +1870,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 +2006,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,23 +2106,19 @@ 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 -msgid "" -"------------------------------------------------------------\n" -"Creating hud from hand %s\n" -msgstr "" -"------------------------------------------------------------\n" -"HUD készítése ebből a leosztásból: %s\n" +#: Hud.py:589 +msgid "Creating hud from hand " +msgstr "HUD készítése ebből a leosztásból: " -#: 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 +2127,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,38 +2143,36 @@ 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 +msgid "determineGameType: limit not found in self.limits(%s). hand: '%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 "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 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" -msgstr "readBlinds noSB-n belül hiba" - -#: OnGameToFpdb.py:265 PokerStarsToFpdb.py:358 -msgid "reading antes" -msgstr "antek olvasása" +#: OnGameToFpdb.py:288 +msgid "readBlinds in noSB exception - no SB created" +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 ." @@ -2080,167 +2256,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 +2414,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 +2422,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" @@ -2514,6 +2670,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 "UltimateBetconverter osztály inicializálása" + #: WinTables.py:82 msgid "Window %s not found. Skipping." msgstr "A(z) %s nevű ablak nincs meg. Kihagyás." @@ -2529,11 +2689,11 @@ msgstr " - nyomj ENTER-t a folytatáshoz\n" #: 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 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 +2711,7 @@ msgstr "" #: 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 "" "Nem sikerült a GUI által igényelt PyGTK modulok betöltése. Kérlek telepítsd " @@ -2679,258 +2839,244 @@ msgstr "Jelenleg nem lehetséges olyat választani, hogy \"üres\" vagy hasonló #: 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 "" -"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" 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 " +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) létre akarod hozni a táblákat." #: fpdb.pyw:548 msgid "" -" they will be deleted.\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.\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:573 +#: fpdb.pyw:549 +msgid "This may take a while." +msgstr "Ez eltarthat egy darabig." + +#: 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" +msgstr "_Auto Import é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" @@ -2940,19 +3086,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" @@ -2960,50 +3106,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 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." +"Á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: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." @@ -3011,7 +3135,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." @@ -3020,65 +3144,65 @@ 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 msgid "" "\n" -"Global lock taken by" +"Global lock taken by %s" msgstr "" "\n" -"Globális zárolást végzett:" +"Globális zárolást végzett %s" -#: 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" -"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: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" +msgstr "Auto Import" -#: 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 " @@ -3139,35 +3263,35 @@ 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: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 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" +"fájlokba itt: %s" -#: 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 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 "" @@ -3176,7 +3300,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." @@ -3205,7 +3329,7 @@ msgstr "" "pénznem még nem támogatott" #: 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 "Nem könyvtár ('%s') megadása importálási könyvtárként" #: fpdb_import.py:237 @@ -3237,12 +3361,12 @@ 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 =" -msgstr "befejező üzenet küldése; qlen =" +msgid "sending finish message queue length =" +msgstr "befejező üzenet küldése; sor hossza =" #: fpdb_import.py:439 fpdb_import.py:441 -msgid "Converting " -msgstr "Konvertálás" +msgid "Converting %s" +msgstr "%s konvertálása" #: fpdb_import.py:477 msgid "Hand processed but empty" @@ -3319,6 +3443,102 @@ 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" + +#~ 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 "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 2d28524b..37b38b53 100644 Binary files a/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo and b/pyfpdb/locale/hu/LC_MESSAGES/fpdb.mo differ diff --git a/pyfpdb/locale/localise.sh b/pyfpdb/locale/localise.sh new file mode 100755 index 00000000..b9d57292 --- /dev/null +++ b/pyfpdb/locale/localise.sh @@ -0,0 +1,16 @@ +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-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/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 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 - 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}} 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) 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}} 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 00000000..9add8f14 Binary files /dev/null and b/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.River.Showdown.txt differ 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}} 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 00000000..d295294b Binary files /dev/null and b/pyfpdb/regression-test-files/cash/FTP/Flop/PLO-6max-USD-0.01-0.02.201003.txt differ 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 ***** + 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) + + +