def __init__( self, parent, excelLink = None ): img_filename = os.path.join( Utils.getImageFolder(), '20100718-Excel_icon.png' ) img = wx.Bitmap(img_filename) if img_filename and os.path.exists(img_filename) else wx.NullBitmap self.wizard = adv.Wizard() self.wizard.SetExtraStyle( adv.WIZARD_EX_HELPBUTTON ) self.wizard.Create( parent, wx.ID_ANY, _('Import TT Start Times'), img ) self.wizard.Bind( adv.EVT_WIZARD_PAGE_CHANGING, self.onPageChanging ) self.wizard.Bind( adv.EVT_WIZARD_HELP, lambda evt: HelpSearch.showHelp('Menu-DataMgmt.html#link-to-external-excel-data') ) self.fileNamePage = FileNamePage( self.wizard ) self.sheetNamePage = SheetNamePage( self.wizard ) self.headerNamesPage = HeaderNamesPage( self.wizard ) self.summaryPage = SummaryPage( self.wizard ) adv.WizardPageSimple.Chain( self.fileNamePage, self.sheetNamePage ) adv.WizardPageSimple.Chain( self.sheetNamePage, self.headerNamesPage ) adv.WizardPageSimple.Chain( self.headerNamesPage, self.summaryPage ) self.excelLink = excelLink if excelLink: if excelLink.fileName: self.fileNamePage.setFileName( excelLink.fileName ) if excelLink.sheetName: self.sheetNamePage.setExpectedSheetName( excelLink.sheetName ) if excelLink.fieldCol: self.headerNamesPage.setExpectedFieldCol( excelLink.fieldCol ) self.wizard.GetPageAreaSizer().Add( self.fileNamePage ) self.wizard.SetPageSize( wx.Size(500,200) ) self.wizard.FitToPage( self.fileNamePage )
def __init__( self, parent, excelLink = None ): img_filename = os.path.join( Utils.getImageFolder(), '20100718-Excel_icon.png' ) img = wx.Bitmap(img_filename) if img_filename and os.path.exists(img_filename) else wx.NullBitmap self.wizard = adv.Wizard() self.wizard.SetExtraStyle( adv.WIZARD_EX_HELPBUTTON ) self.wizard.Create( parent, wx.ID_ANY, _('Define Excel Link'), img ) self.wizard.Bind( adv.EVT_WIZARD_PAGE_CHANGING, self.onPageChanging ) self.wizard.Bind( adv.EVT_WIZARD_HELP, lambda evt: HelpSearch.showHelp('Menu-DataMgmt.html#link-to-external-excel-data') ) self.fileNamePage = FileNamePage( self.wizard ) self.sheetNamePage = SheetNamePage( self.wizard ) self.headerNamesPage = HeaderNamesPage( self.wizard ) self.summaryPage = SummaryPage( self.wizard ) adv.WizardPageSimple.Chain( self.fileNamePage, self.sheetNamePage ) adv.WizardPageSimple.Chain( self.sheetNamePage, self.headerNamesPage ) adv.WizardPageSimple.Chain( self.headerNamesPage, self.summaryPage ) self.excelLink = excelLink if excelLink: if excelLink.fileName: self.fileNamePage.setFileName( excelLink.fileName ) if excelLink.sheetName: self.sheetNamePage.setExpectedSheetName( excelLink.sheetName ) if excelLink.fieldCol: self.headerNamesPage.setExpectedFieldCol( excelLink.fieldCol ) self.wizard.GetPageAreaSizer().Add( self.fileNamePage ) self.wizard.SetPageSize( wx.Size(800,560) ) self.wizard.FitToPage( self.fileNamePage )
def __init__( self, parent, geoTrack = None, geoTrackFName = None ): img_filename = os.path.join( Utils.getImageFolder(), 'gps.png' ) bitmap = wx.Bitmap(img_filename) if img_filename and os.path.exists(img_filename) else wx.NullBitmap self.parent = parent prewizard = wiz.PreWizard() prewizard.SetExtraStyle( wiz.WIZARD_EX_HELPBUTTON ) prewizard.Create( parent, title = _('Import GPX Course File'), bitmap = bitmap ) self.wizard = prewizard self.introPage = IntroPage( self.wizard, self ) self.fileNamePage = FileNamePage( self.wizard ) self.useTimesPage = UseTimesPage( self.wizard ) self.summaryPage = SummaryPage( self.wizard ) self.wizard.Bind( wiz.EVT_WIZARD_PAGE_CHANGING, self.onPageChanging ) self.wizard.Bind( wiz.EVT_WIZARD_CANCEL, self.onCancel ) self.wizard.Bind( wiz.EVT_WIZARD_HELP, lambda evt: HelpSearch.showHelp('Menu-DataMgmt.html#import-course-in-gpx-format') ) wiz.WizardPageSimple_Chain( self.introPage, self.fileNamePage ) wiz.WizardPageSimple_Chain( self.fileNamePage, self.useTimesPage ) wiz.WizardPageSimple_Chain( self.useTimesPage, self.summaryPage ) self.wizard.SetPageSize( wx.Size(500,200) ) self.wizard.GetPageAreaSizer().Add( self.introPage ) self.geoTrack = geoTrack self.geoTrackOriginal = geoTrack self.geoTrackFName = geoTrackFName self.geoTrackFNameOriginal = geoTrackFName self.introPage.setInfo( geoTrack, geoTrackFName ) if geoTrackFName: self.fileNamePage.setInfo( geoTrackFName )
def __init__(self, parent, geoTrack=None, geoTrackFName=None): img_filename = os.path.join(Utils.getImageFolder(), 'gps.png') bitmap = wx.Bitmap(img_filename) if img_filename and os.path.exists( img_filename) else wx.NullBitmap self.parent = parent prewizard = wiz.PreWizard() prewizard.SetExtraStyle(wiz.WIZARD_EX_HELPBUTTON) prewizard.Create(parent, title=_('Import GPX Course File'), bitmap=bitmap) self.wizard = prewizard self.introPage = IntroPage(self.wizard, self) self.fileNamePage = FileNamePage(self.wizard) self.useTimesPage = UseTimesPage(self.wizard) self.summaryPage = SummaryPage(self.wizard) self.wizard.Bind(wiz.EVT_WIZARD_PAGE_CHANGING, self.onPageChanging) self.wizard.Bind(wiz.EVT_WIZARD_CANCEL, self.onCancel) self.wizard.Bind( wiz.EVT_WIZARD_HELP, lambda evt: HelpSearch.showHelp( 'Menu-DataMgmt.html#import-course-in-gpx-format')) wiz.WizardPageSimple_Chain(self.introPage, self.fileNamePage) wiz.WizardPageSimple_Chain(self.fileNamePage, self.useTimesPage) wiz.WizardPageSimple_Chain(self.useTimesPage, self.summaryPage) self.wizard.SetPageSize(wx.Size(500, 200)) self.wizard.GetPageAreaSizer().Add(self.introPage) self.geoTrack = geoTrack self.geoTrackOriginal = geoTrack self.geoTrackFName = geoTrackFName self.geoTrackFNameOriginal = geoTrackFName self.introPage.setInfo(geoTrack, geoTrackFName) if geoTrackFName: self.fileNamePage.setInfo(geoTrackFName)
def onHelp( self, event ): HelpSearch.showHelp( 'Menu-DataMgmt.html#add-dns-from-external-excel-data' )
def __init__(self, parent, id=wx.ID_ANY): wx.Dialog.__init__(self, parent, id, _("Chip Reader Setup"), style=wx.DEFAULT_DIALOG_STYLE | wx.TAB_TRAVERSAL) self.timer = None self.receivedCount = 0 self.refTime = None self.enableJChipCheckBox = wx.CheckBox( self, label=_('Accept RFID Reader Data During Race')) if Model.race: self.enableJChipCheckBox.SetValue( getattr(Model.race, 'enableJChipIntegration', False)) else: self.enableJChipCheckBox.Enable(False) self.testJChip = wx.ToggleButton(self, label=_('Start RFID Test')) self.testJChip.SetFont( wx.Font((0, 24), wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)) self.Bind(wx.EVT_TOGGLEBUTTON, self.testJChipToggle, self.testJChip) self.testList = wx.TextCtrl(self, style=wx.TE_READONLY | wx.TE_MULTILINE, size=(-1, 200)) self.testList.Bind(wx.EVT_RIGHT_DOWN, self.skip) 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) self.helpBtn = wx.Button(self, wx.ID_HELP) self.Bind( wx.EVT_BUTTON, lambda evt: HelpSearch.showHelp( 'Menu-ChipReader.html#chip-reader-setup'), self.helpBtn) self.Bind(EVT_CHIP_READER, self.handleChipReaderEvent) bs = wx.BoxSizer(wx.VERTICAL) todoList = u'\n'.join('%d) %s' % (i + 1, s) for i, s in enumerate([ _('Make sure the RFID receiver is plugged into the network.'), _('If you are using Impinj/Alien, make sure the CrossMgrImpinj or CrossMgrAlien bridge programs are running.' ), _('You must have the Sign-On Excel sheet ready and linked before your race.' ), _('You must configure a "Tag" field in your Sign-On Excel Sheet.'), _('Run this test before each race.'), ])) intro = (u'\n'.join([ _('CrossMgr supports the JChip, RaceResult, Ultra, Impinj and Alien RFID readers.' ), _('For more details, consult the documentation for your reader.'), ]) + u'\n' + _('Checklist:') + u'\n\n{}\n').format(todoList) border = 4 bs.Add(wx.StaticText(self, label=intro), 0, wx.EXPAND | wx.ALL, border) bs.Add(self.enableJChipCheckBox, 0, wx.EXPAND | wx.ALL | wx.ALIGN_LEFT, border) #------------------------------------------------------------------- bs.AddSpacer(border) bs.Add(wx.StaticText(self, label=_('Reader Configuration:')), 0, wx.EXPAND | wx.ALL, border) #------------------------------------------------------------------- rowColSizer = rcs.RowColSizer() bs.Add(rowColSizer, 0, wx.EXPAND | wx.ALL, border) row = 0 rowColSizer.Add(wx.StaticText(self, label=u'{}:'.format(_('Reader Type'))), row=row, col=0, border=border, flag=wx.TOP | wx.LEFT | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.chipReaderType = wx.Choice( self, choices=[_('JChip/Impinj/Alien'), _('RaceResult'), _('Ultra')]) self.chipReaderType.SetSelection(0) self.chipReaderType.Bind(wx.EVT_CHOICE, self.changechipReaderType) rowColSizer.Add(self.chipReaderType, row=row, col=1, border=border, flag=wx.EXPAND | wx.TOP | wx.RIGHT | wx.ALIGN_LEFT) row += 1 sep = u' -' + _('or') + u'- ' ips = sep.join(GetAllIps()) self.ipaddr = wx.TextCtrl(self, value=ips, style=wx.TE_READONLY, size=(240, -1)) self.autoDetect = wx.Button(self, label=_('AutoDetect')) self.autoDetect.Show(False) self.autoDetect.Bind(wx.EVT_BUTTON, self.doAutoDetect) iphs = wx.BoxSizer(wx.HORIZONTAL) iphs.Add(self.ipaddr, 1, flag=wx.EXPAND) iphs.Add(self.autoDetect, 0, flag=wx.LEFT, border=4) rowColSizer.Add(wx.StaticText(self, label=_('Remote IP Address:')), row=row, col=0, flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) rowColSizer.Add(iphs, row=row, col=1, border=border, flag=wx.EXPAND | wx.RIGHT | wx.ALIGN_LEFT) row += 1 self.port = wx.lib.intctrl.IntCtrl(self, -1, min=1, max=65535, value=PORT, limited=True, style=wx.TE_READONLY) rowColSizer.Add(wx.StaticText(self, label=_('Remote Port:')), row=row, col=0, flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) rowColSizer.Add(self.port, row=row, col=1, border=border, flag=wx.EXPAND | wx.RIGHT | wx.ALIGN_LEFT) bs.Add(wx.StaticText( self, label= _('If using JChip, see "7 Setting of Connections" in JChip "Control Panel Soft Manual" for more details.' )), border=border, flag=wx.GROW | wx.ALL) #------------------------------------------------------------------- bs.Add(self.testJChip, 0, wx.ALIGN_CENTER | wx.ALL, border) bs.Add(wx.StaticText(self, label=_('Messages:')), 0, wx.EXPAND | wx.ALL, border=border) bs.Add(self.testList, 1, wx.EXPAND | wx.ALL, border) buttonBox = wx.BoxSizer(wx.HORIZONTAL) buttonBox.AddStretchSpacer() buttonBox.Add(self.okBtn, flag=wx.RIGHT, border=border) self.okBtn.SetDefault() buttonBox.Add(self.cancelBtn) buttonBox.Add(self.helpBtn) bs.Add(buttonBox, 0, wx.EXPAND | wx.ALL, border) self.stopTest() self.SetSizerAndFit(bs) bs.Fit(self) self.update() self.CentreOnParent(wx.BOTH) wx.CallAfter(self.SetFocus)
def __init__(self, parent, id=wx.ID_ANY, uploadNowButton=True): if isDialog: super(FtpPublishObject, self).__init__(parent, id, _("Ftp Publish Results"), style=wx.DEFAULT_DIALOG_STYLE | wx.THICK_FRAME | wx.TAB_TRAVERSAL) else: super(FtpPublishObject, self).__init__(parent, id) fgs = wx.FlexGridSizer(vgap=4, hgap=4, rows=0, cols=2) fgs.AddGrowableCol(1, 1) self.ftpHost = wx.TextCtrl(self, size=(256, -1), style=wx.TE_PROCESS_ENTER, value='') self.ftpPath = wx.TextCtrl(self, size=(256, -1), style=wx.TE_PROCESS_ENTER, value='') self.ftpUploadPhotos = wx.CheckBox( self, label=_("Upload Photos to Path")) self.ftpUploadPhotos.Bind(wx.EVT_CHECKBOX, self.ftpUploadPhotosChanged) self.ftpPhotoPath = wx.TextCtrl(self, size=(256, -1), style=wx.TE_PROCESS_ENTER, value='') self.ftpUser = wx.TextCtrl(self, size=(256, -1), style=wx.TE_PROCESS_ENTER, value='') self.ftpPassword = wx.TextCtrl(self, size=(256, -1), style=wx.TE_PROCESS_ENTER | wx.TE_PASSWORD, value='') self.ftpUploadDuringRace = wx.CheckBox( self, label=_("Automatically Upload Results During Race")) self.urlPath = wx.TextCtrl(self, size=(256, -1), style=wx.TE_PROCESS_ENTER) self.urlPath.Bind(wx.EVT_TEXT, self.urlPathChanged) self.urlFull = wx.StaticText(self) self.refresh() self.qrcodeBitmap = wx.StaticBitmap(self, bitmap=wx.Bitmap( os.path.join( Utils.getImageFolder(), 'QRCodeIcon.png'), wx.BITMAP_TYPE_PNG)) self.printBtn = wx.Button( self, label=_('Print Results URL as a QR Code...')) self.Bind(wx.EVT_BUTTON, self.onPrint, self.printBtn) if isDialog: 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) self.helpBtn = wx.Button(self, wx.ID_HELP) self.Bind( wx.EVT_BUTTON, lambda evt: HelpSearch.showHelp( 'Menu-File.html#publish-html-results-with-ftp'), self.helpBtn) fgs.Add(wx.StaticText(self, label=_("Ftp Host Name")), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL) fgs.Add(self.ftpHost, 1, flag=wx.TOP | wx.ALIGN_LEFT | wx.EXPAND) fgs.Add(wx.StaticText(self, label=_("Upload files to Path")), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL) fgs.Add(self.ftpPath, 1, flag=wx.EXPAND) fgs.Add(self.ftpUploadPhotos, flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL) fgs.Add(self.ftpPhotoPath, 1, flag=wx.EXPAND) fgs.Add(wx.StaticText(self, label=_("User")), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL) fgs.Add(self.ftpUser, 1, flag=wx.EXPAND) fgs.Add(wx.StaticText(self, label=_("Password")), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL) fgs.Add(self.ftpPassword, 1, flag=wx.EXPAND) fgs.AddSpacer(16) fgs.Add(self.ftpUploadDuringRace) fgs.AddSpacer(16) fgs.AddSpacer(16) fgs.Add(wx.StaticText(self, label=_("URL Path (optional)")), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL) fgs.Add(self.urlPath, 1, flag=wx.EXPAND) fgs.Add(wx.StaticText(self, label=_("Published Results URL")), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTRE_VERTICAL) fgs.Add(self.urlFull, 1, flag=wx.EXPAND) border = 4 hb = wx.BoxSizer(wx.HORIZONTAL) hb.Add(self.qrcodeBitmap, flag=wx.ALIGN_CENTRE_VERTICAL) hb.Add(self.printBtn, flag=wx.ALL | wx.ALIGN_CENTRE_VERTICAL, border=border) fgs.AddSpacer(16) fgs.Add(hb) if isDialog: hb = wx.BoxSizer(wx.HORIZONTAL) hb.Add(self.okBtn, border=border, flag=wx.ALL) hb.Add(self.cancelBtn, border=border, flag=wx.ALL) hb.Add(self.helpBtn, border=border, flag=wx.ALL) self.okBtn.SetDefault() mvs = wx.BoxSizer(wx.VERTICAL) mvs.Add(fgs, 1, flag=wx.EXPAND | wx.ALL, border=4) mvs.Add(hb, flag=wx.ALL | wx.ALIGN_CENTER, border=4) self.SetSizerAndFit(mvs) mvs.Fit(self) self.CentreOnParent(wx.BOTH) wx.CallAfter(self.SetFocus) else: self.ftpTestButton = wx.Button(self, label=_('Test FTP Connection')) self.ftpTestButton.Bind(wx.EVT_BUTTON, self.onFtpTest) if uploadNowButton: self.ftpUploadNowButton = wx.Button( self, label=_('Do FTP Upload Now')) self.ftpUploadNowButton.Bind(wx.EVT_BUTTON, self.onFtpUploadNow) fgs.AddSpacer(16) fgs.AddSpacer(16) fgs.Add(self.ftpTestButton, flag=wx.ALIGN_RIGHT) if uploadNowButton: fgs.Add(self.ftpUploadNowButton) else: fgs.AddSpacer(4) self.SetSizerAndFit(fgs) fgs.Fit(self)
def __init__( self, parent, id=wx.ID_ANY, uploadNowButton=True ): if isDialog: super(FtpPublishObject, self).__init__( parent, id, _("Ftp Publish Results"), style=wx.DEFAULT_DIALOG_STYLE|wx.THICK_FRAME|wx.TAB_TRAVERSAL ) else: super(FtpPublishObject, self).__init__( parent, id ) fgs = wx.FlexGridSizer(vgap=4, hgap=4, rows=0, cols=2) fgs.AddGrowableCol( 1, 1 ) self.ftpHost = wx.TextCtrl( self, size=(256,-1), style=wx.TE_PROCESS_ENTER, value='' ) self.ftpPath = wx.TextCtrl( self, size=(256,-1), style=wx.TE_PROCESS_ENTER, value='' ) self.ftpUploadPhotos = wx.CheckBox( self, label=_("Upload Photos to Path") ) self.ftpUploadPhotos.Bind( wx.EVT_CHECKBOX, self.ftpUploadPhotosChanged ) self.ftpPhotoPath = wx.TextCtrl( self, size=(256,-1), style=wx.TE_PROCESS_ENTER, value='' ) self.ftpUser = wx.TextCtrl( self, size=(256,-1), style=wx.TE_PROCESS_ENTER, value='' ) self.ftpPassword = wx.TextCtrl( self, size=(256,-1), style=wx.TE_PROCESS_ENTER|wx.TE_PASSWORD, value='' ) self.ftpUploadDuringRace = wx.CheckBox( self, label = _("Automatically Upload Results During Race") ) self.urlPath = wx.TextCtrl( self, size=(256,-1), style=wx.TE_PROCESS_ENTER ) self.urlPath.Bind( wx.EVT_TEXT, self.urlPathChanged ) self.urlFull = wx.StaticText( self ) self.refresh() self.qrcodeBitmap = wx.StaticBitmap( self, bitmap = wx.Bitmap( os.path.join(Utils.getImageFolder(), 'QRCodeIcon.png'), wx.BITMAP_TYPE_PNG ) ) self.printBtn = wx.Button( self, label = _('Print Results URL as a QR Code...') ) self.Bind( wx.EVT_BUTTON, self.onPrint, self.printBtn ) if isDialog: 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 ) self.helpBtn = wx.Button( self, wx.ID_HELP ) self.Bind( wx.EVT_BUTTON, lambda evt: HelpSearch.showHelp('Menu-File.html#publish-html-results-with-ftp'), self.helpBtn ) fgs.Add( wx.StaticText( self, label = _("Ftp Host Name")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTRE_VERTICAL ) fgs.Add( self.ftpHost, 1, flag=wx.TOP|wx.ALIGN_LEFT|wx.EXPAND ) fgs.Add( wx.StaticText( self, label = _("Upload files to Path")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTRE_VERTICAL ) fgs.Add( self.ftpPath, 1, flag=wx.EXPAND ) fgs.Add( self.ftpUploadPhotos, flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTRE_VERTICAL ) fgs.Add( self.ftpPhotoPath, 1, flag=wx.EXPAND ) fgs.Add( wx.StaticText( self, label = _("User")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTRE_VERTICAL ) fgs.Add( self.ftpUser, 1, flag=wx.EXPAND ) fgs.Add( wx.StaticText( self, label = _("Password")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTRE_VERTICAL ) fgs.Add( self.ftpPassword, 1, flag=wx.EXPAND ) fgs.AddSpacer( 16 ) fgs.Add( self.ftpUploadDuringRace ) fgs.AddSpacer( 16 ) fgs.AddSpacer( 16 ) fgs.Add( wx.StaticText( self, label = _("URL Path (optional)")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTRE_VERTICAL ) fgs.Add( self.urlPath, 1, flag=wx.EXPAND ) fgs.Add( wx.StaticText( self, label = _("Published Results URL")), flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTRE_VERTICAL ) fgs.Add( self.urlFull, 1, flag=wx.EXPAND ) border = 4 hb = wx.BoxSizer( wx.HORIZONTAL ) hb.Add( self.qrcodeBitmap, flag=wx.ALIGN_CENTRE_VERTICAL ) hb.Add( self.printBtn, flag=wx.ALL|wx.ALIGN_CENTRE_VERTICAL, border=border ) fgs.AddSpacer( 16 ) fgs.Add( hb ) if isDialog: hb = wx.BoxSizer( wx.HORIZONTAL ) hb.Add( self.okBtn, border = border, flag=wx.ALL ) hb.Add( self.cancelBtn, border = border, flag=wx.ALL ) hb.Add( self.helpBtn, border = border, flag=wx.ALL ) self.okBtn.SetDefault() mvs = wx.BoxSizer( wx.VERTICAL ) mvs.Add( fgs, 1, flag=wx.EXPAND|wx.ALL, border=4 ) mvs.Add( hb, flag=wx.ALL|wx.ALIGN_CENTER, border=4 ) self.SetSizerAndFit( mvs ) mvs.Fit( self ) self.CentreOnParent( wx.BOTH ) wx.CallAfter( self.SetFocus ) else: self.ftpTestButton = wx.Button( self, label=_('Test FTP Connection') ) self.ftpTestButton.Bind( wx.EVT_BUTTON, self.onFtpTest ) if uploadNowButton: self.ftpUploadNowButton = wx.Button( self, label=_('Do FTP Upload Now') ) self.ftpUploadNowButton.Bind( wx.EVT_BUTTON, self.onFtpUploadNow ) fgs.AddSpacer( 16 ) fgs.AddSpacer( 16 ) fgs.Add( self.ftpTestButton, flag=wx.ALIGN_RIGHT ) if uploadNowButton: fgs.Add( self.ftpUploadNowButton ) else: fgs.AddSpacer( 4 ) self.SetSizerAndFit( fgs ) fgs.Fit( self )
def __init__( self, parent, id = wx.ID_ANY ): wx.Dialog.__init__( self, parent, id, _("Chip Reader Setup"), style=wx.DEFAULT_DIALOG_STYLE|wx.TAB_TRAVERSAL ) self.timer = None self.receivedCount = 0 self.refTime = None self.enableJChipCheckBox = wx.CheckBox( self, label = _('Accept RFID Reader Data During Race') ) if Model.race: self.enableJChipCheckBox.SetValue( getattr(Model.race, 'enableJChipIntegration', False) ) else: self.enableJChipCheckBox.Enable( False ) self.testJChip = wx.ToggleButton( self, label = _('Start RFID Test') ) self.testJChip.SetFont( wx.Font( (0,24), wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL ) ) self.Bind(wx.EVT_TOGGLEBUTTON, self.testJChipToggle, self.testJChip) self.testList = wx.TextCtrl( self, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(-1,200) ) self.testList.Bind( wx.EVT_RIGHT_DOWN, self.skip ) 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 ) self.helpBtn = wx.Button( self, wx.ID_HELP ) self.Bind( wx.EVT_BUTTON, lambda evt: HelpSearch.showHelp('Menu-ChipReader.html#chip-reader-setup'), self.helpBtn ) self.Bind(EVT_CHIP_READER, self.handleChipReaderEvent) bs = wx.BoxSizer( wx.VERTICAL ) todoList = u'\n'.join( '%d) %s' % (i + 1, s) for i, s in enumerate( [ _('Make sure the RFID receiver is plugged into the network.'), _('If you are using Impinj/Alien, make sure the CrossMgrImpinj or CrossMgrAlien bridge programs are running.'), _('You must have the Sign-On Excel sheet ready and linked before your race.'), _('You must configure a "Tag" field in your Sign-On Excel Sheet.'), _('Run this test before each race.'), ]) ) intro = (u'\n'.join( [ _('CrossMgr supports the JChip, RaceResult, Ultra, Impinj and Alien RFID readers.'), _('For more details, consult the documentation for your reader.'), ] ) + u'\n' + _('Checklist:') + u'\n\n{}\n').format( todoList ) border = 4 bs.Add( wx.StaticText(self, label = intro), 0, wx.EXPAND|wx.ALL, border ) bs.Add( self.enableJChipCheckBox, 0, wx.EXPAND|wx.ALL|wx.ALIGN_LEFT, border ) #------------------------------------------------------------------- bs.AddSpacer( border ) bs.Add( wx.StaticText( self, label = _('Reader Configuration:') ), 0, wx.EXPAND|wx.ALL, border ) #------------------------------------------------------------------- rowColSizer = rcs.RowColSizer() bs.Add( rowColSizer, 0, wx.EXPAND|wx.ALL, border ) row = 0 rowColSizer.Add( wx.StaticText( self, label=u'{}:'.format(_('Reader Type')) ), row=row, col=0, border=border, flag=wx.TOP|wx.LEFT|wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL ) self.chipReaderType = wx.Choice( self, choices=[_('JChip/Impinj/Alien'), _('RaceResult'), _('Ultra')] ) self.chipReaderType.SetSelection( 0 ) self.chipReaderType.Bind( wx.EVT_CHOICE, self.changechipReaderType ) rowColSizer.Add( self.chipReaderType, row=row, col=1, border=border, flag=wx.EXPAND|wx.TOP|wx.RIGHT|wx.ALIGN_LEFT ) row += 1 sep = u' -' + _('or') + u'- ' ips = sep.join( GetAllIps() ) self.ipaddr = wx.TextCtrl( self, value = ips, style = wx.TE_READONLY, size=(240,-1) ) self.autoDetect = wx.Button( self, label=_('AutoDetect') ) self.autoDetect.Show( False ) self.autoDetect.Bind( wx.EVT_BUTTON, self.doAutoDetect ) iphs = wx.BoxSizer( wx.HORIZONTAL ) iphs.Add( self.ipaddr, 1, flag=wx.EXPAND ) iphs.Add( self.autoDetect, 0, flag=wx.LEFT, border=4 ) rowColSizer.Add( wx.StaticText( self, label=_('Remote IP Address:') ), row=row, col=0, flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL ) rowColSizer.Add( iphs, row=row, col=1, border=border, flag=wx.EXPAND|wx.RIGHT|wx.ALIGN_LEFT ) row += 1 self.port = wx.lib.intctrl.IntCtrl( self, -1, min=1, max=65535, value=PORT, limited=True, style = wx.TE_READONLY ) rowColSizer.Add( wx.StaticText(self, label = _('Remote Port:')), row=row, col=0, flag=wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL ) rowColSizer.Add( self.port, row=row, col=1, border=border, flag=wx.EXPAND|wx.RIGHT|wx.ALIGN_LEFT ) bs.Add( wx.StaticText( self, label = _('If using JChip, see "7 Setting of Connections" in JChip "Control Panel Soft Manual" for more details.') ), border=border, flag = wx.GROW|wx.ALL ) #------------------------------------------------------------------- bs.Add( self.testJChip, 0, wx.ALIGN_CENTER|wx.ALL, border ) bs.Add( wx.StaticText(self, label = _('Messages:')), 0, wx.EXPAND|wx.ALL, border=border ) bs.Add( self.testList, 1, wx.EXPAND|wx.ALL, border ) buttonBox = wx.BoxSizer( wx.HORIZONTAL ) buttonBox.AddStretchSpacer() buttonBox.Add( self.okBtn, flag = wx.RIGHT, border=border ) self.okBtn.SetDefault() buttonBox.Add( self.cancelBtn ) buttonBox.Add( self.helpBtn ) bs.Add( buttonBox, 0, wx.EXPAND | wx.ALL, border ) self.stopTest() self.SetSizerAndFit(bs) bs.Fit( self ) self.update() self.CentreOnParent(wx.BOTH) wx.CallAfter( self.SetFocus )