-
Notifications
You must be signed in to change notification settings - Fork 0
/
TTResults.py
93 lines (77 loc) · 2.75 KB
/
TTResults.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import wx
import wx.grid as gridlib
import os
import sys
import six
import TestData
import Utils
import Model
from ReorderableGrid import ReorderableGrid
from Events import GetFont
class TTResults(wx.Panel):
#----------------------------------------------------------------------
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.headerNames = ['Pos', 'Bib', 'Name', 'Team', 'Time']
self.grid = ReorderableGrid( self, style = wx.BORDER_SUNKEN )
self.grid.DisableDragRowSize()
self.grid.SetRowLabelSize( 0 )
self.grid.CreateGrid( 0, len(self.headerNames) )
self.setColNames()
self.grid.EnableReorderRows( False )
# Set a larger font for the table.
# Set specialized editors for appropriate columns.
font = GetFont()
self.grid.SetLabelFont( font )
for col in six.moves.range(self.grid.GetNumberCols()):
attr = gridlib.GridCellAttr()
attr.SetFont( font )
if col == self.grid.GetNumberCols() - 1:
attr.SetRenderer( gridlib.GridCellFloatRenderer(-1, 3) )
attr.SetEditor( gridlib.GridCellFloatEditor(-1, 3) )
else:
if col in (0, 1):
attr.SetRenderer( gridlib.GridCellNumberRenderer() )
attr.SetReadOnly( True )
self.grid.SetColAttr( col, attr )
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.grid, 1, flag=wx.EXPAND|wx.ALL, border = 6)
self.SetSizer(sizer)
def setColNames( self ):
for col, headerName in enumerate(self.headerNames):
self.grid.SetColLabelValue( col, headerName )
def getGrid( self ):
return self.grid
def refresh( self ):
riders = sorted( Model.model.riders, key = lambda r: r.qualifyingTime )
starters = Model.model.competition.starters
Utils.AdjustGridSize( self.grid, rowsRequired = len(riders) )
for row, r in enumerate(riders):
if row < starters:
pos = u'{}'.format(row + 1)
else:
pos = 'DNQ'
for col in six.moves.range(self.grid.GetNumberCols()):
self.grid.SetCellBackgroundColour( row, col, wx.Colour(200,200,200) )
for col, value in enumerate([pos,u' {}'.format(r.bib), r.full_name, r.team, '%.3f' % r.qualifyingTime]):
self.grid.SetCellValue( row, col, value )
self.grid.AutoSizeColumns( False )
self.grid.AutoSizeRows( False )
def commit( self ):
pass
########################################################################
class TTResultsFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="Qualifier Grid Test", size=(800,600) )
panel = TTResults(self)
panel.refresh()
self.Show()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = wx.App(False)
Model.model = SetDefaultData()
frame = TTResultsFrame()
app.MainLoop()