improve sorting but still not quite working right
This commit is contained in:
parent
0b049a128b
commit
69b3c5a339
|
@ -15,6 +15,7 @@
|
||||||
#In the "official" distribution you can find the license in
|
#In the "official" distribution you can find the license in
|
||||||
#agpl-3.0.txt in the docs folder of the package.
|
#agpl-3.0.txt in the docs folder of the package.
|
||||||
|
|
||||||
|
import traceback
|
||||||
import threading
|
import threading
|
||||||
import pygtk
|
import pygtk
|
||||||
pygtk.require('2.0')
|
pygtk.require('2.0')
|
||||||
|
@ -29,7 +30,11 @@ import Database
|
||||||
import fpdb_db
|
import fpdb_db
|
||||||
import Filters
|
import Filters
|
||||||
|
|
||||||
|
colalias,colshow,colheading,colxalign,colformat,coltype = 0,1,2,3,4,5
|
||||||
|
ranks = {'x':0, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'T':10, 'J':11, 'Q':12, 'K':13, 'A':14}
|
||||||
|
|
||||||
class GuiPlayerStats (threading.Thread):
|
class GuiPlayerStats (threading.Thread):
|
||||||
|
|
||||||
def __init__(self, config, querylist, mainwin, debug=True):
|
def __init__(self, config, querylist, mainwin, debug=True):
|
||||||
self.debug = debug
|
self.debug = debug
|
||||||
self.conf = config
|
self.conf = config
|
||||||
|
@ -252,22 +257,56 @@ class GuiPlayerStats (threading.Thread):
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def sortcols(self, col, n):
|
def sortnums(self, model, iter1, iter2, n):
|
||||||
#This doesn't actually work yet
|
try:
|
||||||
|
ret = 0
|
||||||
|
a = self.liststore.get_value(iter1, n)
|
||||||
|
b = self.liststore.get_value(iter2, n)
|
||||||
|
if 'f' in self.cols_to_show[n][4]:
|
||||||
|
try: a = float(a)
|
||||||
|
except: a = 0.0
|
||||||
|
try: b = float(b)
|
||||||
|
except: b = 0.0
|
||||||
if n == 0:
|
if n == 0:
|
||||||
# Card values can stay the same for the moment.
|
a1,a2,a3 = ranks[a[0]], ranks[a[1]], (a+'o')[2]
|
||||||
return
|
b1,b2,b3 = ranks[b[0]], ranks[b[1]], (b+'o')[2]
|
||||||
|
if a1 > b1 or ( a1 == b1 and (a2 > b2 or (a2 == b2 and a3 > b3) ) ):
|
||||||
|
ret = 1
|
||||||
|
else:
|
||||||
|
ret = -1
|
||||||
|
else:
|
||||||
|
if a < b:
|
||||||
|
ret = -1
|
||||||
|
elif a == b:
|
||||||
|
ret = 0
|
||||||
|
else:
|
||||||
|
ret = 1
|
||||||
|
#print "n =", n, "iter1[n] =", self.liststore.get_value(iter1,n), "iter2[n] =", self.liststore.get_value(iter2,n), "ret =", ret
|
||||||
|
except:
|
||||||
|
err = traceback.extract_tb(sys.exc_info()[2])
|
||||||
|
print "***sortnums error: " + str(sys.exc_info()[1])
|
||||||
|
print "\n".join( [e[0]+':'+str(e[1])+" "+e[2] for e in err] )
|
||||||
|
|
||||||
|
return(ret)
|
||||||
|
|
||||||
|
def sortcols(self, col, n):
|
||||||
|
try:
|
||||||
|
#This doesn't actually work yet - clicking heading in top section sorts bottom section :-(
|
||||||
if col.get_sort_order() == gtk.SORT_ASCENDING:
|
if col.get_sort_order() == gtk.SORT_ASCENDING:
|
||||||
col.set_sort_order(gtk.SORT_DESCENDING)
|
col.set_sort_order(gtk.SORT_DESCENDING)
|
||||||
else:
|
else:
|
||||||
col.set_sort_order(gtk.SORT_ASCENDING)
|
col.set_sort_order(gtk.SORT_ASCENDING)
|
||||||
self.liststore.set_sort_column_id(n, col.get_sort_order())
|
self.liststore.set_sort_column_id(n, col.get_sort_order())
|
||||||
|
self.liststore.set_sort_func(n, self.sortnums, n)
|
||||||
|
except:
|
||||||
|
err = traceback.extract_tb(sys.exc_info()[2])
|
||||||
|
print "***sortcols error: " + str(sys.exc_info()[1])
|
||||||
|
print "\n".join( [e[0]+':'+str(e[1])+" "+e[2] for e in err] )
|
||||||
|
|
||||||
def addTable(self, vbox, query, flags, playerids, sitenos, limits, type, seats, groups, dates):
|
def addTable(self, vbox, query, flags, playerids, sitenos, limits, type, seats, groups, dates):
|
||||||
counter = 0
|
counter = 0
|
||||||
row = 0
|
row = 0
|
||||||
sqlrow = 0
|
sqlrow = 0
|
||||||
colalias,colshow,colheading,colxalign,colformat,coltype = 0,1,2,3,4,5
|
|
||||||
if not flags: holecards = False
|
if not flags: holecards = False
|
||||||
else: holecards = flags[0]
|
else: holecards = flags[0]
|
||||||
|
|
||||||
|
@ -278,10 +317,10 @@ class GuiPlayerStats (threading.Thread):
|
||||||
colnames = [desc[0].lower() for desc in self.cursor.description]
|
colnames = [desc[0].lower() for desc in self.cursor.description]
|
||||||
|
|
||||||
# pre-fetch some constant values:
|
# pre-fetch some constant values:
|
||||||
cols_to_show = [x for x in self.columns if x[colshow]]
|
self.cols_to_show = [x for x in self.columns if x[colshow]]
|
||||||
hgametypeid_idx = colnames.index('hgametypeid')
|
hgametypeid_idx = colnames.index('hgametypeid')
|
||||||
|
|
||||||
self.liststore = gtk.ListStore(*([str] * len(cols_to_show)))
|
self.liststore = gtk.ListStore(*([str] * len(self.cols_to_show)))
|
||||||
view = gtk.TreeView(model=self.liststore)
|
view = gtk.TreeView(model=self.liststore)
|
||||||
view.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_BOTH)
|
view.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_BOTH)
|
||||||
#vbox.pack_start(view, expand=False, padding=3)
|
#vbox.pack_start(view, expand=False, padding=3)
|
||||||
|
@ -292,10 +331,9 @@ class GuiPlayerStats (threading.Thread):
|
||||||
numcell = gtk.CellRendererText()
|
numcell = gtk.CellRendererText()
|
||||||
numcell.set_property('xalign', 1.0)
|
numcell.set_property('xalign', 1.0)
|
||||||
listcols = []
|
listcols = []
|
||||||
idx = 0
|
|
||||||
|
|
||||||
# Create header row eg column: ("game", True, "Game", 0.0, "%s")
|
# Create header row eg column: ("game", True, "Game", 0.0, "%s")
|
||||||
for col, column in enumerate(cols_to_show):
|
for col, column in enumerate(self.cols_to_show):
|
||||||
if column[colalias] == 'game' and holecards:
|
if column[colalias] == 'game' and holecards:
|
||||||
s = [x for x in self.columns if x[colalias] == 'hand'][0][colheading]
|
s = [x for x in self.columns if x[colalias] == 'hand'][0][colheading]
|
||||||
else:
|
else:
|
||||||
|
@ -304,7 +342,7 @@ class GuiPlayerStats (threading.Thread):
|
||||||
view.append_column(listcols[col])
|
view.append_column(listcols[col])
|
||||||
#listcols[col].set_clickable(True)
|
#listcols[col].set_clickable(True)
|
||||||
#listcols[col].set_sort_indicator(True)
|
#listcols[col].set_sort_indicator(True)
|
||||||
#listcols[col].connect("clicked", self.sortcols, idx)
|
#listcols[col].connect("clicked", self.sortcols, col)
|
||||||
if column[colformat] == '%s':
|
if column[colformat] == '%s':
|
||||||
if column[colxalign] == 0.0:
|
if column[colxalign] == 0.0:
|
||||||
listcols[col].pack_start(textcell, expand=True)
|
listcols[col].pack_start(textcell, expand=True)
|
||||||
|
@ -322,13 +360,12 @@ class GuiPlayerStats (threading.Thread):
|
||||||
listcols[col].set_cell_data_func(numcell, self.ledger_style_render_func)
|
listcols[col].set_cell_data_func(numcell, self.ledger_style_render_func)
|
||||||
else:
|
else:
|
||||||
listcols[col].set_cell_data_func(numcell, self.reset_style_render_func)
|
listcols[col].set_cell_data_func(numcell, self.reset_style_render_func)
|
||||||
idx = idx+1
|
|
||||||
|
|
||||||
rows = len(result) # +1 for title row
|
rows = len(result) # +1 for title row
|
||||||
|
|
||||||
while sqlrow < rows:
|
while sqlrow < rows:
|
||||||
treerow = []
|
treerow = []
|
||||||
for col,column in enumerate(cols_to_show):
|
for col,column in enumerate(self.cols_to_show):
|
||||||
if column[colalias] in colnames:
|
if column[colalias] in colnames:
|
||||||
value = result[sqlrow][colnames.index(column[colalias])]
|
value = result[sqlrow][colnames.index(column[colalias])]
|
||||||
if column[colalias] == 'plposition':
|
if column[colalias] == 'plposition':
|
||||||
|
|
Loading…
Reference in New Issue
Block a user