From 203dcb44aee6daeb5ac9af20db6c3a75a2a4a9b3 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Thu, 21 May 2009 23:29:34 +0100 Subject: [PATCH 1/4] copy storehudcache2 into storehudcache, keeping the extra copy for more changes ... --- pyfpdb/fpdb_simple.py | 154 ++++++++++++++++++------------------------ 1 file changed, 65 insertions(+), 89 deletions(-) diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index be88ef17..d3a1712c 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -2407,77 +2407,23 @@ def generateFoldToCB(street, playerIDs, didStreetCB, streetCBDone, foldToStreetC foldToStreetCBDone[player]=True #end def generateFoldToCB -def storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData): +def storeHudCache(backend, cursor, base, category, gametypeId, playerIds, hudImportData): + """Modified version aiming for more speed ...""" # if (category=="holdem" or category=="omahahi" or category=="omahahilo"): #print "storeHudCache, len(playerIds)=", len(playerIds), " len(vpip)=" \ #, len(hudImportData['street0VPI']), " len(totprof)=", len(hudImportData['totalProfit']) for player in xrange(len(playerIds)): - if base=="hold": - cursor.execute("""SELECT id, gametypeId, playerId, activeSeats, position, tourneyTypeId, HDs, - street0VPI, street0Aggr, street0_3BChance, street0_3BDone, - street1Seen, street2Seen, street3Seen, street4Seen, - sawShowdown, street1Aggr, street2Aggr, street3Aggr, street4Aggr, - otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, - foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, foldToOtherRaisedStreet4, - wonWhenSeenStreet1, wonAtSD, stealAttemptChance, stealAttempted, - foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal, - street1CBChance, street1CBDone, street2CBChance, street2CBDone, - street3CBChance, street3CBDone, street4CBChance, street4CBDone, - foldToStreet1CBChance, foldToStreet1CBDone, foldToStreet2CBChance, foldToStreet2CBDone, - foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance, foldToStreet4CBDone, - totalProfit, street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance, street2CheckCallRaiseDone, - street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone - FROM HudCache - WHERE gametypeId+0=%s AND playerId=%s AND activeSeats=%s AND position=%s - """ - , (gametypeId, playerIds[player], len(playerIds), hudImportData['position'][player])) - else: - cursor.execute("""SELECT id, gametypeId, playerId, activeSeats, position, tourneyTypeId, HDs, - street0VPI, street0Aggr, street0_3BChance, street0_3BDone, - street1Seen, street2Seen, street3Seen, street4Seen, - sawShowdown, street1Aggr, street2Aggr, street3Aggr, street4Aggr, - otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, - foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, foldToOtherRaisedStreet4, - wonWhenSeenStreet1, wonAtSD, stealAttemptChance, stealAttempted, - foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal, - street1CBChance, street1CBDone, street2CBChance, street2CBDone, - street3CBChance, street3CBDone, street4CBChance, street4CBDone, - foldToStreet1CBChance, foldToStreet1CBDone, foldToStreet2CBChance, foldToStreet2CBDone, - foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance, foldToStreet4CBDone, - totalProfit, street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance, street2CheckCallRaiseDone, - street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone - FROM HudCache - WHERE gametypeId+0=%s AND playerId=%s AND activeSeats=%s - """ - , (gametypeId, playerIds[player], len(playerIds))) - row=cursor.fetchone() - #print "gametypeId:", gametypeId, "playerIds[player]",playerIds[player], "len(playerIds):",len(playerIds), "row:",row - try: len(row) - except TypeError: - row=[] - - if not row: - #print "new huddata row" - doInsert=True - row=[] - row.append(0)#blank for id - row.append(gametypeId) - row.append(playerIds[player]) - row.append(len(playerIds))#seats - for i in xrange(len(hudImportData)+2): - row.append(0) + # Set up a clean row + row=[] + row.append(0)#blank for id + row.append(gametypeId) + row.append(playerIds[player]) + row.append(len(playerIds))#seats + for i in xrange(len(hudImportData)+2): + row.append(0) - else: - doInsert=False - # This is making a copy of the original list, although i really don't see any reason it's being done? - newrow=[] - newrow.extend(row) -# for i in xrange(len(row)): -# newrow.append(row[i]) - row=newrow - if base=="hold": row[4]=hudImportData['position'][player] else: @@ -2546,8 +2492,56 @@ def storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData): if hudImportData['street4CheckCallRaiseChance'][player]: row[59]+=1 if hudImportData['street4CheckCallRaiseDone'][player]: row[60]+=1 - if doInsert: - #print "playerid before insert:",row[2] + # Try to do the update first: + num = cursor.execute("""UPDATE HudCache +SET HDs=HDs+%s, street0VPI=street0VPI+%s, street0Aggr=street0Aggr+%s, + street0_3BChance=street0_3BChance+%s, street0_3BDone=street0_3BDone+%s, + street1Seen=street1Seen+%s, street2Seen=street2Seen+%s, street3Seen=street3Seen+%s, + street4Seen=street4Seen+%s, sawShowdown=sawShowdown+%s, + street1Aggr=street1Aggr+%s, street2Aggr=street2Aggr+%s, street3Aggr=street3Aggr+%s, + street4Aggr=street4Aggr+%s, otherRaisedStreet1=otherRaisedStreet1+%s, + otherRaisedStreet2=otherRaisedStreet2+%s, otherRaisedStreet3=otherRaisedStreet3+%s, + otherRaisedStreet4=otherRaisedStreet4+%s, + foldToOtherRaisedStreet1=foldToOtherRaisedStreet1+%s, foldToOtherRaisedStreet2=foldToOtherRaisedStreet2+%s, + foldToOtherRaisedStreet3=foldToOtherRaisedStreet3+%s, foldToOtherRaisedStreet4=foldToOtherRaisedStreet4+%s, + wonWhenSeenStreet1=wonWhenSeenStreet1+%s, wonAtSD=wonAtSD+%s, stealAttemptChance=stealAttemptChance+%s, + stealAttempted=stealAttempted+%s, foldBbToStealChance=foldBbToStealChance+%s, + foldedBbToSteal=foldedBbToSteal+%s, + foldSbToStealChance=foldSbToStealChance+%s, foldedSbToSteal=foldedSbToSteal+%s, + street1CBChance=street1CBChance+%s, street1CBDone=street1CBDone+%s, street2CBChance=street2CBChance+%s, + street2CBDone=street2CBDone+%s, street3CBChance=street3CBChance+%s, + street3CBDone=street3CBDone+%s, street4CBChance=street4CBChance+%s, street4CBDone=street4CBDone+%s, + foldToStreet1CBChance=foldToStreet1CBChance+%s, foldToStreet1CBDone=foldToStreet1CBDone+%s, + foldToStreet2CBChance=foldToStreet2CBChance+%s, foldToStreet2CBDone=foldToStreet2CBDone+%s, + foldToStreet3CBChance=foldToStreet3CBChance+%s, + foldToStreet3CBDone=foldToStreet3CBDone+%s, foldToStreet4CBChance=foldToStreet4CBChance+%s, + foldToStreet4CBDone=foldToStreet4CBDone+%s, totalProfit=totalProfit+%s, + street1CheckCallRaiseChance=street1CheckCallRaiseChance+%s, + street1CheckCallRaiseDone=street1CheckCallRaiseDone+%s, street2CheckCallRaiseChance=street2CheckCallRaiseChance+%s, + street2CheckCallRaiseDone=street2CheckCallRaiseDone+%s, street3CheckCallRaiseChance=street3CheckCallRaiseChance+%s, + street3CheckCallRaiseDone=street3CheckCallRaiseDone+%s, street4CheckCallRaiseChance=street4CheckCallRaiseChance+%s, + street4CheckCallRaiseDone=street4CheckCallRaiseDone+%s +WHERE gametypeId+0=%s +AND playerId=%s +AND activeSeats=%s +AND position=%s +AND tourneyTypeId+0=%s""", (row[6], row[7], row[8], row[9], row[10], + row[11], row[12], row[13], row[14], row[15], + row[16], row[17], row[18], row[19], row[20], + row[21], row[22], row[23], row[24], row[25], + row[26], row[27], row[28], row[29], row[30], + row[31], row[32], row[33], row[34], row[35], + row[36], row[37], row[38], row[39], row[40], + row[41], row[42], row[43], row[44], row[45], + row[46], row[47], row[48], row[49], row[50], + row[51], row[52], row[53], row[54], row[55], + row[56], row[57], row[58], row[59], row[60], + row[1], row[2], row[3], str(row[4]), row[5])) + # Test statusmessage to see if update worked, do insert if not + #print "storehud2, upd num =", num + if ( (backend == PGSQL and cursor.statusmessage != "UPDATE 1") + or (backend == MYSQL_INNODB and num == 0) ): + #print "playerid before insert:",row[2]," num = ", num cursor.execute("""INSERT INTO HudCache (gametypeId, playerId, activeSeats, position, tourneyTypeId, styleKey, HDs, street0VPI, street0Aggr, street0_3BChance, street0_3BDone, @@ -2579,30 +2573,12 @@ VALUES (%s, %s, %s, %s, %s, %s, ,row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30] ,row[31], row[32], row[33], row[34], row[35], row[36], row[37], row[38], row[39], row[40] ,row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[50] - ,row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60])) + ,row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60]) ) + #print "hopefully inserted hud data line: ", cursor.statusmessage + # message seems to be "INSERT 0 1" else: - #print "storing updated hud data line" - cursor.execute("""UPDATE HudCache -SET HDs=%s, street0VPI=%s, street0Aggr=%s, street0_3BChance=%s, street0_3BDone=%s, -street1Seen=%s, street2Seen=%s, street3Seen=%s, street4Seen=%s, sawShowdown=%s, -street1Aggr=%s, street2Aggr=%s, street3Aggr=%s, street4Aggr=%s, otherRaisedStreet1=%s, -otherRaisedStreet2=%s, otherRaisedStreet3=%s, otherRaisedStreet4=%s, foldToOtherRaisedStreet1=%s, foldToOtherRaisedStreet2=%s, -foldToOtherRaisedStreet3=%s, foldToOtherRaisedStreet4=%s, wonWhenSeenStreet1=%s, wonAtSD=%s, stealAttemptChance=%s, -stealAttempted=%s, foldBbToStealChance=%s, foldedBbToSteal=%s, foldSbToStealChance=%s, foldedSbToSteal=%s, -street1CBChance=%s, street1CBDone=%s, street2CBChance=%s, street2CBDone=%s, street3CBChance=%s, -street3CBDone=%s, street4CBChance=%s, street4CBDone=%s, foldToStreet1CBChance=%s, foldToStreet1CBDone=%s, -foldToStreet2CBChance=%s, foldToStreet2CBDone=%s, foldToStreet3CBChance=%s, foldToStreet3CBDone=%s, foldToStreet4CBChance=%s, -foldToStreet4CBDone=%s, totalProfit=%s, street1CheckCallRaiseChance=%s, street1CheckCallRaiseDone=%s, street2CheckCallRaiseChance=%s, -street2CheckCallRaiseDone=%s, street3CheckCallRaiseChance=%s, street3CheckCallRaiseDone=%s, street4CheckCallRaiseChance=%s, street4CheckCallRaiseDone=%s -WHERE gametypeId=%s AND playerId=%s AND activeSeats=%s AND position=%s AND tourneyTypeId=%s""", (row[6], row[7], row[8], row[9], row[10], - row[11], row[12], row[13], row[14], row[15], - row[16], row[17], row[18], row[19], row[20], - row[21], row[22], row[23], row[24], row[25], - row[26], row[27], row[28], row[29], row[30], - row[31], row[32], row[33], row[34], row[35], row[36], row[37], row[38], row[39], row[40], - row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[50], - row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60], - row[1], row[2], row[3], str(row[4]), row[5])) + #print "updated(2) hud data line" + pass # else: # print "todo: implement storeHudCache for stud base" #end def storeHudCache From 06b1ce002f237c94f4168137ac9c0063cf8986ac Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sat, 23 May 2009 09:47:50 +0100 Subject: [PATCH 2/4] fix sql to work in postgres --- pyfpdb/SQL.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 33ea3590..02193287 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -324,7 +324,7 @@ class Sql: AND gt1.category = gt2.category AND gt1.limittype = gt2.limittype AND gt2.id = h.gametypeId) - GROUP BY hc.PlayerId, hc.styleKey + GROUP BY hc.PlayerId, p.name, hc.styleKey """ self.query['get_players_from_hand'] = """ From 061ff083a6f80c06b4e6c875c9190e488abe1985 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sat, 23 May 2009 21:42:26 +0100 Subject: [PATCH 3/4] get rid of warning message when starting fpdb --- pyfpdb/fpdb.py | 169 ++++++++++++++++++++++++++++++------------------- 1 file changed, 103 insertions(+), 66 deletions(-) diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index 80b1ed4e..3529dfe9 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -105,30 +105,30 @@ class fpdb: #end def delete_event def destroy(self, widget, data=None): - self.quit(widget, data) + self.quit(widget) #end def destroy - def dia_about(self, widget, data): + def dia_about(self, widget, data=None): print "todo: implement dia_about", print " version = %s, requires database version %s" % (VERSION, "118") #end def dia_about - def dia_create_del_database(self, widget, data): + def dia_create_del_database(self, widget, data=None): print "todo: implement dia_create_del_database" self.obtain_global_lock() #end def dia_create_del_database - def dia_create_del_user(self, widget, data): + def dia_create_del_user(self, widget, data=None): print "todo: implement dia_create_del_user" self.obtain_global_lock() #end def dia_create_del_user - def dia_database_stats(self, widget, data): + def dia_database_stats(self, widget, data=None): print "todo: implement dia_database_stats" #string=fpdb_db.getDbStats(db, cursor) #end def dia_database_stats - def dia_delete_db_parts(self, widget, data): + def dia_delete_db_parts(self, widget, data=None): print "todo: implement dia_delete_db_parts" self.obtain_global_lock() #end def dia_delete_db_parts @@ -138,7 +138,7 @@ class fpdb: self.obtain_global_lock() #end def dia_edit_profile - def dia_export_db(self, widget, data): + def dia_export_db(self, widget, data=None): print "todo: implement dia_export_db" self.obtain_global_lock() #end def dia_export_db @@ -163,16 +163,16 @@ class fpdb: # return (user, pw, response) #end def dia_get_db_root_credentials - def dia_import_db(self, widget, data): + def dia_import_db(self, widget, data=None): print "todo: implement dia_import_db" self.obtain_global_lock() #end def dia_import_db - def dia_licensing(self, widget, data): + def dia_licensing(self, widget, data=None): print "todo: implement dia_licensing" #end def dia_licensing - def dia_load_profile(self, widget, data): + def dia_load_profile(self, widget, data=None): """Dialogue to select a file to load a profile from""" self.obtain_global_lock() chooser = gtk.FileChooserDialog(title="Please select a profile file to load", @@ -188,7 +188,7 @@ class fpdb: print 'User cancelled loading profile' #end def dia_load_profile - def dia_recreate_tables(self, widget, data): + def dia_recreate_tables(self, widget, data=None): """Dialogue that asks user to confirm that he wants to delete and recreate the tables""" self.obtain_global_lock() @@ -205,12 +205,12 @@ class fpdb: print 'User cancelled recreating tables' #end def dia_recreate_tables - def dia_regression_test(self, widget, data): + def dia_regression_test(self, widget, data=None): print "todo: implement dia_regression_test" self.obtain_global_lock() #end def dia_regression_test - def dia_save_profile(self, widget, data): + def dia_save_profile(self, widget, data=None): print "todo: implement dia_save_profile" #end def dia_save_profile @@ -237,11 +237,87 @@ class fpdb: def get_menu(self, window): """returns the menu for this program""" - accel_group = gtk.AccelGroup() - self.item_factory = gtk.ItemFactory(gtk.MenuBar, "
", accel_group) - self.item_factory.create_items(self.menu_items) + fpdbmenu = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """ + + uimanager = gtk.UIManager() + accel_group = uimanager.get_accel_group() + actiongroup = gtk.ActionGroup('UIManagerExample') + + # Create actions + actiongroup.add_actions([('main', None, '_Main'), + ('Quit', gtk.STOCK_QUIT, '_Quit me!', None, 'Quit the Program', self.quit), + ('LoadProf', None, '_Load Profile (broken)', 'L', 'Load your profile', self.dia_load_profile), + ('EditProf', None, '_Edit Profile (todo)', 'E', 'Edit your profile', self.dia_edit_profile), + ('SaveProf', None, '_Save Profile (todo)', 'S', 'Save your profile', self.dia_save_profile), + ('import', None, '_Import'), + ('bulkimp', None, '_Bulk Import', 'B', 'Bulk Import', self.tab_bulk_import), + ('autorate', None, 'Auto _Rating (todo)', 'R', 'Auto Rating (todo)', self.not_implemented), + ('viewers', None, '_Viewers'), + ('autoimp', None, '_Auto Import and HUD', 'A', 'Auto Import and HUD', self.tab_auto_import), + ('graphs', None, '_Graphs', 'G', 'Graphs', self.tabGraphViewer), + ('handreplay', None, 'Hand _Replayer (todo)', None, 'Hand Replayer (todo)', self.not_implemented), + ('playerdetails', None, 'Player _Details (todo)', None, 'Player Details (todo)', self.not_implemented), + ('playerstats', None, '_Player Stats (tabulated view)', 'control>P', 'Player Stats (tabulated view)', self.tab_player_stats), + ('posnstats', None, 'P_ositional Stats (tabulated view)', 'control>O', 'Positional Stats (tabulated view)', self.tab_positional_stats), + ('sessionreplay', None, '_Session Replayer (todo)', None, 'Session Replayer (todo)', self.not_implemented), + ('tableviewer', None, 'Poker_table Viewer (mostly obselete)', None, 'Poker_table Viewer (mostly obselete)', self.tab_table_viewer), + ('database', None, '_Database'), + ('createdb', None, 'Create or Delete _Database (todo)', None, 'Create or Delete Database', self.dia_create_del_database), + ('createuser', None, 'Create or Delete _User (todo)', None, 'Create or Delete User', self.dia_create_del_user), + ('createtabs', None, 'Create or Recreate _Tables', None, 'Create or Recreate Tables ', self.dia_recreate_tables), + ('stats', None, '_Statistics (todo)', None, 'View Database Statistics', self.dia_database_stats), + ('help', None, '_Help'), + ('Abbrev', None, '_Abbrevations (todo)', None, 'List of Abbrevations', self.tab_abbreviations), + ('About', None, 'A_bout', None, 'About the program', self.dia_about), + ('License', None, '_License and Copying (todo)', None, 'License and Copying', self.dia_licensing), + ]) + actiongroup.get_action('Quit').set_property('short-label', '_Quit') + + uimanager.insert_action_group(actiongroup, 0) + merge_id = uimanager.add_ui_from_string(fpdbmenu) + + # Create a MenuBar + menubar = uimanager.get_widget('/MenuBar') window.add_accel_group(accel_group) - return self.item_factory.get_widget("
") + return menubar #end def get_menu def load_profile(self): @@ -298,7 +374,7 @@ class fpdb: print "todo: implement obtain_global_lock (users: pls ignore this)" #end def obtain_global_lock - def quit(self, widget, data): + def quit(self, widget): print "Quitting normally" #check if current settings differ from profile, if so offer to save or abort self.db.disconnect() @@ -309,11 +385,11 @@ class fpdb: print "todo: implement release_global_lock" #end def release_global_lock - def tab_abbreviations(self, widget, data): + def tab_abbreviations(self, widget, data=None): print "todo: implement tab_abbreviations" #end def tab_abbreviations - def tab_auto_import(self, widget, data): + def tab_auto_import(self, widget, data=None): """opens the auto import tab""" new_aimp_thread=GuiAutoImport.GuiAutoImport(self.settings, self.config) self.threads.append(new_aimp_thread) @@ -321,7 +397,7 @@ class fpdb: self.add_and_display_tab(aimp_tab, "Auto Import") #end def tab_auto_import - def tab_bulk_import(self, widget, data): + def tab_bulk_import(self, widget, data=None): """opens a tab for bulk importing""" #print "start of tab_bulk_import" new_import_thread=GuiBulkImport.GuiBulkImport(self.settings, self.config) @@ -330,20 +406,20 @@ class fpdb: self.add_and_display_tab(bulk_tab, "Bulk Import") #end def tab_bulk_import - def tab_player_stats(self, widget, data): + def tab_player_stats(self, widget, data=None): new_ps_thread=GuiPlayerStats.GuiPlayerStats(self.config, self.querydict, self.window) self.threads.append(new_ps_thread) ps_tab=new_ps_thread.get_vbox() self.add_and_display_tab(ps_tab, "Player Stats") - def tab_positional_stats(self, widget, data): + def tab_positional_stats(self, widget, data=None): new_ps_thread=GuiPositionalStats.GuiPositionalStats(self.config, self.querydict) self.threads.append(new_ps_thread) ps_tab=new_ps_thread.get_vbox() self.add_and_display_tab(ps_tab, "Positional Stats") - def tab_main_help(self, widget, data): + def tab_main_help(self, widget, data=None): """Displays a tab with the main fpdb help screen""" #print "start of tab_main_help" mh_tab=gtk.Label("""Welcome to Fpdb! @@ -353,7 +429,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") self.add_and_display_tab(mh_tab, "Help") #end def tab_main_help - def tab_table_viewer(self, widget, data): + def tab_table_viewer(self, widget, data=None): """opens a table viewer tab""" #print "start of tab_table_viewer" new_tv_thread=GuiTableViewer.GuiTableViewer(self.db, self.settings) @@ -362,7 +438,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") self.add_and_display_tab(tv_tab, "Table Viewer") #end def tab_table_viewer - def tabGraphViewer(self, widget, data): + def tabGraphViewer(self, widget, data=None): """opens a graph viewer tab""" #print "start of tabGraphViewer" new_gv_thread=GuiGraphViewer.GuiGraphViewer(self.db, self.settings, self.querydict, self.config) @@ -385,46 +461,6 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") self.window.set_default_size(900,720) self.window.set_resizable(True) - self.menu_items = ( - ( "/_Main", None, None, 0, "" ), - ( "/Main/_Load Profile (broken)", "L", self.dia_load_profile, 0, None ), - ( "/Main/_Edit Profile (todo)", "E", self.dia_edit_profile, 0, None ), - ( "/Main/_Save Profile (todo)", None, self.dia_save_profile, 0, None ), - ("/Main/sep1", None, None, 0, "" ), - ("/Main/_Quit", "Q", self.quit, 0, None ), - ("/_Import", None, None, 0, "" ), - ("/Import/_Bulk Import", "B", self.tab_bulk_import, 0, None ), - ("/Import/_Auto Import and HUD", "A", self.tab_auto_import, 0, None ), - ("/Import/Auto _Rating (todo)", "R", self.not_implemented, 0, None ), - ("/_Viewers", None, None, 0, "" ), - ("/_Viewers/_Auto Import and HUD", "A", self.tab_auto_import, 0, None ), - ("/Viewers/_Graphs", "G", self.tabGraphViewer, 0, None ), - ("/Viewers/Hand _Replayer (todo)", None, self.not_implemented, 0, None ), - ("/Viewers/Player _Details (todo)", None, self.not_implemented, 0, None ), - ("/Viewers/_Player Stats (tabulated view)", "P", self.tab_player_stats, 0, None ), - ("/Viewers/P_ositional Stats (tabulated view)", "O", self.tab_positional_stats, 0, None ), - ("/Viewers/Starting _Hands (todo)", None, self.not_implemented, 0, None ), - ("/Viewers/_Session Replayer (todo)", None, self.not_implemented, 0, None ), - ("/Viewers/Poker_table Viewer (mostly obselete)", "T", self.tab_table_viewer, 0, None ), - #( "/Viewers/Tourney Replayer - ( "/_Database", None, None, 0, "" ), - ( "/Database/Create or Delete _Database (todo)", None, self.dia_create_del_database, 0, None ), - ( "/Database/Create or Delete _User (todo)", None, self.dia_create_del_user, 0, None ), - ( "/Database/Create or Recreate _Tables", None, self.dia_recreate_tables, 0, None ), - ( "/Database/_Statistics (todo)", None, self.dia_database_stats, 0, None ), - ( "/D_ebugging", None, None, 0, "" ), - ( "/Debugging/_Delete Parts of Database (todo)", None, self.dia_delete_db_parts, 0, None ), - ( "/Debugging/_Export DB (todo)", None, self.dia_export_db, 0, None ), - ( "/Debugging/_Import DB (todo)", None, self.dia_import_db, 0, None ), - ( "/Debugging/_Regression test (todo)", None, self.dia_regression_test, 0, None ), - ( "/_Help", None, None, 0, "" ), - ( "/Help/_Main Help", "H", self.tab_main_help, 0, None ), - ( "/Help/_Abbrevations (todo)", None, self.tab_abbreviations, 0, None ), - ( "/Help/sep1", None, None, 0, "" ), - ( "/Help/A_bout (todo)", None, self.dia_about, 0, None ), - ( "/Help/_License and Copying (todo)", None, self.dia_licensing, 0, None ) - ) - self.main_vbox = gtk.VBox(False, 1) self.main_vbox.set_border_width(1) self.window.add(self.main_vbox) @@ -455,6 +491,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") self.status_bar.show() self.window.show() + sys.stderr.write("fpdb starting ...") #end def __init__ def main(self): From e7532ea49727ba52822651cacd052d4a60a39136 Mon Sep 17 00:00:00 2001 From: sqlcoder Date: Sat, 23 May 2009 22:06:41 +0100 Subject: [PATCH 4/4] fix typos in control keys in last release --- pyfpdb/fpdb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index 3529dfe9..66ed87cf 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -295,8 +295,8 @@ class fpdb: ('graphs', None, '_Graphs', 'G', 'Graphs', self.tabGraphViewer), ('handreplay', None, 'Hand _Replayer (todo)', None, 'Hand Replayer (todo)', self.not_implemented), ('playerdetails', None, 'Player _Details (todo)', None, 'Player Details (todo)', self.not_implemented), - ('playerstats', None, '_Player Stats (tabulated view)', 'control>P', 'Player Stats (tabulated view)', self.tab_player_stats), - ('posnstats', None, 'P_ositional Stats (tabulated view)', 'control>O', 'Positional Stats (tabulated view)', self.tab_positional_stats), + ('playerstats', None, '_Player Stats (tabulated view)', 'P', 'Player Stats (tabulated view)', self.tab_player_stats), + ('posnstats', None, 'P_ositional Stats (tabulated view)', 'O', 'Positional Stats (tabulated view)', self.tab_positional_stats), ('sessionreplay', None, '_Session Replayer (todo)', None, 'Session Replayer (todo)', self.not_implemented), ('tableviewer', None, 'Poker_table Viewer (mostly obselete)', None, 'Poker_table Viewer (mostly obselete)', self.tab_table_viewer), ('database', None, '_Database'),