def __init__(self, parent, catPredicate, id=wx.ID_ANY): wx.Dialog.__init__(self, parent, id, "Category Predicate", style=wx.DEFAULT_DIALOG_STYLE | wx.TAB_TRAVERSAL) self.catPredicate = catPredicate border = 2 bs = wx.GridBagSizer(vgap=3, hgap=3) row = 0 numbersLabel = wx.StaticText(self, label=u'{}:'.format(_('Numbers'))) bs.Add(numbersLabel, pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.numbers = wx.TextCtrl(self) bs.Add(self.numbers, pos=(row, 1), span=(1, 1), border=border, flag=wx.RIGHT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) row += 1 genderLabel = wx.StaticText(self, label=u'{}:'.format(_('Gender'))) bs.Add(genderLabel, pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) self.gender = wx.Choice(self, choices=['Open', 'Men', 'Women']) bs.Add(self.gender, pos=(row, 1), span=(1, 1), border=border, flag=wx.RIGHT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) self.gender.SetSelection(0) row += 1 ageLabel = wx.StaticText(self, label=u'{}:'.format(_('Age'))) bs.Add(ageLabel, pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT) hs = wx.BoxSizer(wx.HORIZONTAL) self.ageRange = [None, None] self.ageRange[0] = wx.lib.intctrl.IntCtrl(self, min=0, max=110, allow_none=True, limited=True, size=(32, -1)) self.ageRange[1] = wx.lib.intctrl.IntCtrl(self, min=0, max=110, allow_none=True, limited=True, size=(32, -1)) hs.Add(self.ageRange[0]) hs.Add(wx.StaticText(self, label=u' ' + _('to') + u' '), flag=wx.ALIGN_CENTER_VERTICAL) hs.Add(self.ageRange[1]) bs.Add(hs, pos=(row, 1), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_LEFT) row += 1 categoryLabel = wx.StaticText(self, label=u'{}:'.format(_('Categories'))) bs.Add(categoryLabel, pos=(row, 0), span=(1, 1), border=8, flag=wx.LEFT | wx.TOP | wx.ALIGN_TOP | wx.ALIGN_RIGHT) self.il = wx.ImageList(16, 16) self.sm_rt = self.il.Add( wx.Bitmap( os.path.join(Utils.getImageFolder(), 'SmallRightArrow.png'), wx.BITMAP_TYPE_PNG)) self.sm_up = self.il.Add( wx.Bitmap(os.path.join(Utils.getImageFolder(), 'SmallUpArrow.png'), wx.BITMAP_TYPE_PNG)) self.sm_dn = self.il.Add( wx.Bitmap( os.path.join(Utils.getImageFolder(), 'SmallDownArrow.png'), wx.BITMAP_TYPE_PNG)) self.categoryList = AutoWidthListCtrl(self, size=(-1, 180), style=wx.LC_REPORT | wx.BORDER_SUNKEN | wx.LC_HRULES) self.categoryList.SetImageList(self.il, wx.IMAGE_LIST_SMALL) self.categoryList.InsertColumn(0, _("Category")) bs.Add(self.categoryList, pos=(row, 1), span=(1, 1), border=border, flag=wx.RIGHT | wx.TOP | wx.BOTTOM | wx.EXPAND) row += 1 self.okBtn = wx.Button(self, wx.ID_OK) self.Bind(wx.EVT_BUTTON, self.onOK, self.okBtn) self.cancelBtn = wx.Button(self, wx.ID_CANCEL) self.Bind(wx.EVT_BUTTON, self.onCancel, self.cancelBtn) row += 1 border = 8 bs.Add(self.okBtn, pos=(row, 0), span=(1, 1), border=border, flag=wx.ALL) self.okBtn.SetDefault() bs.Add(self.cancelBtn, pos=(row, 1), span=(1, 1), border=border, flag=wx.ALL) bs.AddGrowableCol(1) bs.AddGrowableRow(row - 2) self.SetSizerAndFit(bs) bs.Fit(self)
def getCatCountImagesCategoryList(parent): il = wx.ImageList(16, 16) sm_rt = il.Add( wx.Bitmap(os.path.join(Utils.getImageFolder(), 'SmallRightArrow.png'), wx.BITMAP_TYPE_PNG)) sm_up = il.Add( wx.Bitmap(os.path.join(Utils.getImageFolder(), 'SmallUpArrow.png'), wx.BITMAP_TYPE_PNG)) sm_dn = il.Add( wx.Bitmap(os.path.join(Utils.getImageFolder(), 'SmallDownArrow.png'), wx.BITMAP_TYPE_PNG)) list = AutoWidthListCtrl(parent, style=wx.LC_REPORT | wx.BORDER_SUNKEN | wx.LC_HRULES) list.SetImageList(il, wx.IMAGE_LIST_SMALL) list.InsertColumn(0, _("Name")) list.InsertColumn(1, _("Gender")) list.InsertColumn(2, _("Type")) list.InsertColumn(3, _("Count"), wx.LIST_FORMAT_RIGHT) list.InsertColumn(4, '') catCount = {} race = Model.race if race: with UnstartedRaceWrapper(): SyncExcelLink(race) for c in race.getCategories(startWaveOnly=False, publishOnly=True): catCount[c] = race.catCount(c) if catCount[c] == 0: continue index = list.InsertStringItem(sys.maxint, c.name, sm_rt) list.SetStringItem(index, 1, getattr(c, 'gender', 'Open')) list.SetStringItem( index, 2, [_('Start Wave'), _('Component'), _('Custom')][c.catType]) list.SetStringItem(index, 3, u'{}'.format(catCount[c])) for col in xrange(4 + 1): list.SetColumnWidth(0, wx.LIST_AUTOSIZE) list.SetColumnWidth(1, 64) list.SetColumnWidth(3, 52) return catCount, il, list