예제 #1
0
	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 )
예제 #2
0
	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 )
예제 #3
0
	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 )
예제 #4
0
    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)
예제 #5
0
	def onHelp( self, event ):
		HelpSearch.showHelp( 'Menu-DataMgmt.html#add-dns-from-external-excel-data' )
예제 #6
0
    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)
예제 #7
0
	def onHelp( self, event ):
		HelpSearch.showHelp( 'Menu-DataMgmt.html#add-dns-from-external-excel-data' )
예제 #8
0
        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)
예제 #9
0
		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 )
예제 #10
0
	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 )