diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py
index fa23f1cd..943479cd 100644
--- a/pyfpdb/Database.py
+++ b/pyfpdb/Database.py
@@ -1694,11 +1694,11 @@ class Database:
def storeHand(self, p, printdata = False):
if printdata:
- print "######## Hands ##########"
+ print _("######## Hands ##########")
import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(p)
- print "###### End Hands ########"
+ print _("###### End Hands ########")
#stores into table hands:
q = self.sql.query['store_hand']
diff --git a/pyfpdb/GuiReplayer.py b/pyfpdb/GuiReplayer.py
index bc29090c..ba5a985e 100644
--- a/pyfpdb/GuiReplayer.py
+++ b/pyfpdb/GuiReplayer.py
@@ -118,11 +118,11 @@ class GuiReplayer:
self.table[i]={"name":self.MyHand.players[i][1],"stack":Decimal(self.MyHand.players[i][2]),"x":x,"y":y,"chips":0,"status":"live"} #save coordinates of each player
try:
self.table[i]['holecards']=self.MyHand.holecards["PREFLOP"][self.MyHand.players[i][1]][1]+' '+self.MyHand.holecards["PREFLOP"][self.MyHand.players[i][1]][2]
- print "holecards",self.table[i]['holecards']
+ print "holecards: ",self.table[i]['holecards']
except:
self.table[i]['holecards']=''
except IndexError: #if seat is empty
- print "seat",i+1,"out of",self.maxseats,"empty"
+ print "seat ",i+1," out of ",self.maxseats," empty"
self.actions=[] #create list with all actions
@@ -236,7 +236,7 @@ class GuiReplayer:
rect = gtk.gdk.Rectangle(270,270,100,50)
self.area.window.invalidate_rect(rect, True) #refresh pot area
self.area.window.process_updates(True)
- print "draw action",self.action_number,self.actions[self.action_number][1],self.actions[self.action_number][2],self.actions[self.action_number][3]
+ print "draw action: ",self.action_number,self.actions[self.action_number][1],self.actions[self.action_number][2],self.actions[self.action_number][3]
return True
diff --git a/pyfpdb/GuiSessionViewer.py b/pyfpdb/GuiSessionViewer.py
index 466f8d9b..8a85fd30 100644
--- a/pyfpdb/GuiSessionViewer.py
+++ b/pyfpdb/GuiSessionViewer.py
@@ -155,15 +155,10 @@ class GuiSessionViewer (threading.Thread):
# make sure Hand column is not displayed
#[x for x in self.columns if x[0] == 'hand'][0][1] = False
if DEBUG == False:
- warning_string = """
-Session Viewer is proof of concept code only, and contains many bugs.
-
-Feel free to use the viewer, but there is no guarantee that the data is accurate.
-
-If you are interested in developing the code further please contact us via the usual channels.
-
-Thankyou
-"""
+ warning_string = _("Session Viewer is proof of concept code only, and contains many bugs.\n")
+ warning_string += _("Feel free to use the viewer, but there is no guarantee that the data is accurate.\n")
+ warning_string += _("If you are interested in developing the code further please contact us via the usual channels.\n")
+ warning_string += _("Thankyou")
self.warning_box(warning_string)
def warning_box(self, str, diatitle=_("FPDB WARNING")):
diff --git a/pyfpdb/GuiStove.py b/pyfpdb/GuiStove.py
index f238e503..b600c81e 100644
--- a/pyfpdb/GuiStove.py
+++ b/pyfpdb/GuiStove.py
@@ -54,15 +54,10 @@ class GuiStove():
self.mainHBox.show_all()
if DEBUG == False:
- warning_string = _("""
-Stove is a GUI mockup of a EV calculation page, and completely non functional.
-
-Unless you are interested in developing this feature, please ignore this page.
-
-If you are interested in developing the code further see GuiStove.py and Stove.py
-
-Thankyou
-""")
+ warning_string = _("Stove is a GUI mockup of a EV calculation page, and completely non functional.\n")
+ warning_string = _("Unless you are interested in developing this feature, please ignore this page.\n")
+ warning_string = _("If you are interested in developing the code further see GuiStove.py and Stove.py\n")
+ warning_string = _("Thank you\n")
self.warning_box(warning_string)
diff --git a/pyfpdb/HUD_main.pyw b/pyfpdb/HUD_main.pyw
index 4a8f46ed..4a8cbc0d 100755
--- a/pyfpdb/HUD_main.pyw
+++ b/pyfpdb/HUD_main.pyw
@@ -323,7 +323,7 @@ def idle_resize(hud):
[aw.update_card_positions() for aw in hud.aux_windows]
hud.resize_windows()
except:
- log.exception("Error resizing HUD for table: %s." % hud.table.title)
+ log.exception(_("Error resizing HUD for table: %s.") % hud.table.title)
finally:
gtk.gdk.threads_leave()
@@ -337,7 +337,7 @@ def idle_kill(hud_main, table):
del(hud_main.hud_dict[table])
hud_main.main_window.resize(1, 1)
except:
- log.exception("Error killing HUD for table: %s." % table.title)
+ log.exception(_("Error killing HUD for table: %s.") % table.title)
finally:
gtk.gdk.threads_leave()
@@ -360,7 +360,7 @@ def idle_create(hud_main, new_hand_id, table, temp_key, max, poker_game, type, s
hud_main.hud_dict[temp_key].update(new_hand_id, hud_main.config)
hud_main.hud_dict[temp_key].reposition_windows()
except:
- log.exception("Error creating HUD for hand %s." % new_hand_id)
+ log.exception(_("Error creating HUD for hand %s.") % new_hand_id)
finally:
gtk.gdk.threads_leave()
return False
@@ -371,7 +371,7 @@ def idle_update(hud_main, new_hand_id, table_name, config):
hud_main.hud_dict[table_name].update(new_hand_id, config)
[aw.update_gui(new_hand_id) for aw in hud_main.hud_dict[table_name].aux_windows]
except:
- log.exception("Error updating HUD for hand %s." % new_hand_id)
+ log.exception(_("Error updating HUD for hand %s.") % new_hand_id)
finally:
gtk.gdk.threads_leave()
return False
diff --git a/pyfpdb/IdentifySite.py b/pyfpdb/IdentifySite.py
old mode 100644
new mode 100755
index b4f1a8a7..26a3e1e2
--- a/pyfpdb/IdentifySite.py
+++ b/pyfpdb/IdentifySite.py
@@ -1,122 +1,122 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-#Copyright 2010 Chaz Littlejohn
-#This program is free software: you can redistribute it and/or modify
-#it under the terms of the GNU Affero General Public License as published by
-#the Free Software Foundation, version 3 of the License.
-#
-#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 Affero General Public License
-#along with this program. If not, see .
-#In the "official" distribution you can find the license in agpl-3.0.txt.
-
-import L10n
-_ = L10n.get_translation()
-
-import re
-import sys
-import os
-import os.path
-from optparse import OptionParser
-import codecs
-import Configuration
-import Database
-
-__ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+'
-re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX)
-
-
-class IdentifySite:
- def __init__(self, config, in_path = '-'):
- self.in_path = in_path
- self.config = config
- self.db = Database.Database(config)
- self.sitelist = {}
- self.filelist = {}
- self.generateSiteList()
- self.walkDirectory(self.in_path, self.sitelist)
-
- def generateSiteList(self):
- """Generates a ordered dictionary of site, filter and filter name for each site in hhcs"""
- for site, hhc in self.config.hhcs.iteritems():
- filter = hhc.converter
- filter_name = filter.replace("ToFpdb", "")
- result = self.db.get_site_id(site)
- if len(result) == 1:
- self.sitelist[result[0][0]] = (site, filter, filter_name)
- else:
- pass
-
- def walkDirectory(self, dir, sitelist):
- """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):
- self.walkDirectory(nfile, sitelist)
- else:
- self.idSite(nfile, sitelist)
-
- def __listof(self, x):
- if isinstance(x, list) or isinstance(x, tuple):
- return x
- else:
- return [x]
-
- def idSite(self, file, sitelist):
- """Identifies the site the hh file originated from"""
- if file.endswith('.txt'):
- self.filelist[file] = ''
- archive = False
- for site, info in sitelist.iteritems():
- mod = __import__(info[1])
- obj = getattr(mod, info[2], None)
-
- for kodec in self.__listof(obj.codepage):
- try:
- in_fh = codecs.open(file, 'r', kodec)
- whole_file = in_fh.read()
- in_fh.close()
-
- if info[2] in ('OnGame', 'Winamax'):
- m = obj.re_HandInfo.search(whole_file)
- elif info[2] in ('PartyPoker'):
- m = obj.re_GameInfoRing.search(whole_file)
- if not m:
- m = obj.re_GameInfoTrny.search(whole_file)
- else:
- m = obj.re_GameInfo.search(whole_file)
- if re_SplitArchive.search(whole_file):
- archive = True
- if m:
- self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive]
- break
- except:
- pass
-
-def main(argv=None):
- if argv is None:
- argv = sys.argv[1:]
-
- config = Configuration.Config(file = "HUD_config.test.xml")
- in_path = 'regression-test-files/'
- IdSite = IdentifySite(config, in_path)
-
- print "\n----------- SITE LIST -----------"
- for site, info in IdSite.sitelist.iteritems():
- print site, info
- print "----------- END SITE LIST -----------"
-
- print "\n----------- ID REGRESSION FILES -----------"
- for file, site in IdSite.filelist.iteritems():
- print file, site
- print "----------- END ID REGRESSION FILES -----------"
-
-
-if __name__ == '__main__':
- sys.exit(main())
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+#Copyright 2010 Chaz Littlejohn
+#This program is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, version 3 of the License.
+#
+#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 Affero General Public License
+#along with this program. If not, see .
+#In the "official" distribution you can find the license in agpl-3.0.txt.
+
+import L10n
+_ = L10n.get_translation()
+
+import re
+import sys
+import os
+import os.path
+from optparse import OptionParser
+import codecs
+import Configuration
+import Database
+
+__ARCHIVE_PRE_HEADER_REGEX='^Hand #(\d+)\s*$|\*{20}\s#\s\d+\s\*+\s+'
+re_SplitArchive = re.compile(__ARCHIVE_PRE_HEADER_REGEX)
+
+
+class IdentifySite:
+ def __init__(self, config, in_path = '-'):
+ self.in_path = in_path
+ self.config = config
+ self.db = Database.Database(config)
+ self.sitelist = {}
+ self.filelist = {}
+ self.generateSiteList()
+ self.walkDirectory(self.in_path, self.sitelist)
+
+ def generateSiteList(self):
+ """Generates a ordered dictionary of site, filter and filter name for each site in hhcs"""
+ for site, hhc in self.config.hhcs.iteritems():
+ filter = hhc.converter
+ filter_name = filter.replace("ToFpdb", "")
+ result = self.db.get_site_id(site)
+ if len(result) == 1:
+ self.sitelist[result[0][0]] = (site, filter, filter_name)
+ else:
+ pass
+
+ def walkDirectory(self, dir, sitelist):
+ """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):
+ self.walkDirectory(nfile, sitelist)
+ else:
+ self.idSite(nfile, sitelist)
+
+ def __listof(self, x):
+ if isinstance(x, list) or isinstance(x, tuple):
+ return x
+ else:
+ return [x]
+
+ def idSite(self, file, sitelist):
+ """Identifies the site the hh file originated from"""
+ if file.endswith('.txt'):
+ self.filelist[file] = ''
+ archive = False
+ for site, info in sitelist.iteritems():
+ mod = __import__(info[1])
+ obj = getattr(mod, info[2], None)
+
+ for kodec in self.__listof(obj.codepage):
+ try:
+ in_fh = codecs.open(file, 'r', kodec)
+ whole_file = in_fh.read()
+ in_fh.close()
+
+ if info[2] in ('OnGame', 'Winamax'):
+ m = obj.re_HandInfo.search(whole_file)
+ elif info[2] in ('PartyPoker'):
+ m = obj.re_GameInfoRing.search(whole_file)
+ if not m:
+ m = obj.re_GameInfoTrny.search(whole_file)
+ else:
+ m = obj.re_GameInfo.search(whole_file)
+ if re_SplitArchive.search(whole_file):
+ archive = True
+ if m:
+ self.filelist[file] = [info[0]] + [info[1]] + [kodec] + [archive]
+ break
+ except:
+ pass
+
+def main(argv=None):
+ if argv is None:
+ argv = sys.argv[1:]
+
+ config = Configuration.Config(file = "HUD_config.test.xml")
+ in_path = 'regression-test-files/'
+ IdSite = IdentifySite(config, in_path)
+
+ print "\n----------- SITE LIST -----------"
+ for site, info in IdSite.sitelist.iteritems():
+ print site, info
+ print "----------- END SITE LIST -----------"
+
+ print "\n----------- ID REGRESSION FILES -----------"
+ for file, site in IdSite.filelist.iteritems():
+ print file, site
+ print "----------- END ID REGRESSION FILES -----------"
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/pyfpdb/OnGameToFpdb.py b/pyfpdb/OnGameToFpdb.py
index 66b19b9b..7de6d1a5 100755
--- a/pyfpdb/OnGameToFpdb.py
+++ b/pyfpdb/OnGameToFpdb.py
@@ -93,7 +93,7 @@ class OnGame(HandHistoryConverter):
(?P%(LS)s|)?(?P[.0-9]+)/
(%(LS)s)?(?P[.0-9]+)
)?
- """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE)
+ """ % substitutions, re.MULTILINE|re.DOTALL|re.VERBOSE) #TODO: detect play money (identified by "Play money" rather than "Real money" and set currency accordingly
re_TailSplitHands = re.compile(u'(\*\*\*\*\*\sEnd\sof\shand\s[-A-Z\d]+.*\n)(?=\*)')
re_Button = re.compile('Button: seat (?P